Ë
    ÷Q(hW  ã                   ó^  — d dl Z d dl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  d dl!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* ejV                  jY                  d	 ejZ                  g d
¢«      g d
¢g«      d„ «       Z.d„ Z/e%d„ «       Z0e%d„ «       Z1ejV                  jY                  dddg«      d„ «       Z2ejV                  jY                  d e «       «      ejV                  jY                  dddd dg d¢fdddddgfddgd dg d
¢fg d¢ddddgfdd gd dg d!¢fg d"¢ddd#d$gfddgd dg d%¢fg d&¢ddd'd(gfg d
¢g d
¢gd dg d¢fg d)¢g d*¢gddddgfd+dd dg d,¢fdddd-d.gfddgd dg d
¢fg d¢ddd/d0gfdd gd dg d1¢fg d"¢ddd2d3gfddgd dg d4¢fg d&¢ddd0d5gfg d
¢g d
¢gd dg d6¢fg d)¢g d*¢gddd7d8gfg«      d9„ «       «       Z3ejV                  jY                  d: e d¬;«      «      d<„ «       Z4ejV                  jY                  d: e d¬;«      «      ejV                  jY                  d=dddge5d>fd ddgge6e5fd?fd g d@¢e6d?fd dAdge7dBff«      dC„ «       «       Z8dD„ Z9e%dE„ «       Z:e%ejV                  jY                  dFg dG¢«      ejV                  jY                  dHddejv                  gedfddIejv                   gedIfejx                  ejx                  geejx                  fg d
¢ejv                  ejv                  ejv                  gg dJ¢g eed ¬K«      g dL¢fg d
¢ejv                  ejv                  ejv                  gg dJ¢g eed¬K«      dMejv                  dNgfddejv                  gedfddejv                  gedfejx                   ejx                   geejx                   fg d
¢ejv                  ejv                  ejv                  gg dJ¢g eed ¬K«      g dO¢fg d
¢ejv                  ejv                  ejv                  gg dJ¢g eed¬K«      dPejv                  dQgfddejv                  gedfddIejv                   gedRfejx                   ejx                   geejx                   fg d
¢ejv                  ejv                  ejv                  gg dJ¢g eed ¬K«      g d¢fg d
¢ejv                  ejv                  ejv                  gg dJ¢g eed¬K«      dSejv                  dTgfg«      dU„ «       «       «       Z=ejV                  jY                  dV e «       «      dW„ «       Z>e%ejV                  jY                  dFdXdYg«      dZ„ «       «       Z?d[„ Z@ G d\„ d]e
«      ZAe%ejV                  jY                  d^dYd_„ fdd`„ fdXda„ fg«      db„ «       «       ZBe%dc„ «       ZCdd„ ZDde„ ZEejV                  jY                  dV e «       «      df„ «       ZFejV                  jY                  dV e «       «      dg„ «       ZGejV                  jY                  dh e «       «      ejV                  jY                  diddg«      ejV                  jY                  djddg«      ejV                  jY                  dkg dl¢«      ejV                  jY                  dmg dn¢«      do„ «       «       «       «       «       ZHdp„ ZIejV                  jY                  d e «       «      ejV                  jY                  dqe(«      ejV                  jY                  drg ds¢«      ejV                  jY                  dtg du¢«      dv„ «       «       «       «       ZJejV                  jY                  d e «       «      ejV                  jY                  dwddg«      dx„ «       «       ZKejV                  jY                  dqe(«      ejV                  jY                  dyddg«      dz„ «       «       ZLy){é    N)Úpartial)Úassert_allclose)Úconfig_context)ÚBaseEstimator)Ú_asarray_with_orderÚ_atol_for_typeÚ_averageÚ_convert_to_numpyÚ_count_nonzeroÚ _estimator_with_converted_arraysÚ_fill_or_add_to_diagonalÚ_is_numpy_namespaceÚ_isinÚ_max_precision_float_dtypeÚ_nanmaxÚ_nanmeanÚ_nanminÚ_NumPyAPIWrapperÚ_ravelÚdeviceÚget_namespaceÚget_namespace_and_deviceÚindexing_dtypeÚsupported_float_dtypesÚ)yield_namespace_device_dtype_combinations)ÚSkipTestÚ_array_api_for_testsÚassert_array_equalÚ'skip_if_array_api_compat_not_configured)Ú	_IS_32BITÚCSR_CONTAINERSÚ
np_versionÚparse_versionÚX©é   é   é   c                 óL   — t        | «      \  }}t        |t        «      sJ ‚|rJ ‚y)z.Check that get_namespace returns NumPy wrapperN)r   Ú
isinstancer   )r$   Úxp_outÚis_array_api_compliants      ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/utils/tests/test_array_api.pyÚ"test_get_namespace_ndarray_defaultr.   *   s1   € ô &3°1Ó%5Ñ"€FÐ"Ü�fÔ.Ô/Ð/Ð/Ù%Ð%Ð%Ð%ó    c                  ó  — t        j                  g d¢«      } t        | «      \  }}|j                  ddd¬«      }t	        |dgdz  «       t        j                  t        d¬«      5  |j                  dd¬	«       d
d
d
«       y
# 1 sw Y   y
xY w)z;Check expected behavior with device and creation functions.r%   é
   ç       @Úcpu)Ú
fill_valuer   zUnsupported device©ÚmatchÚcuda©r   N)	ÚnumpyÚasarrayr   Úfullr   ÚpytestÚraisesÚ
ValueErrorÚzeros)r$   r+   Ú_Ú
full_arrays       r-   Ú*test_get_namespace_ndarray_creation_devicerB   2   sv   € ä�‰’iÓ €AÜ˜aÓ �I€FˆAà—‘˜R¨C¸�Ó>€JÜ�J  ¨¡
Ô+ä	�‰”zÐ)=Ô	>ñ (Ø�‰�R ˆÔ'÷(÷ (ñ (ús   Á%BÂBc                  óT  — t        j                  d«      } t        | j                  «      t        d«      k  rt        j                  d¬«       t        j                  g d¢g«      }t        d¬«      5  t        |«      \  }}|sJ ‚|| j
                  u sJ ‚	 ddd«       y# 1 sw Y   yxY w)	z%Test get_namespace on NumPy ndarrays.Úarray_api_compatz1.9zZarray_api_compat was temporarily reporting NumPy as API compliant and this test would fail)Úreasonr%   T©Úarray_api_dispatchN)	r<   Úimportorskipr#   Ú__version__Úskipr9   r:   r   r   )rD   ÚX_npr+   r,   s       r-   Ú(test_get_namespace_ndarray_with_dispatchrL   >   sŸ   € ô ×*Ñ*Ð+=Ó>ÐÜÐ%×1Ñ1Ó2´]À5Ó5IÒIÜ�‰ð'õ	
ô
 �=‰=š)˜Ó%€Dä	¨4Ô	0ñ 0Ü)6°tÓ)<Ñ&ˆÐ&Ù%Ð%Ð%ð Ð)×/Ñ/Ñ/Ð/Ñ/÷0÷ 0ñ 0ús   Á1#BÂB'c                 óH  — t        j                  d«      }t        j                  g d¢g«      }|j                  |«      }t	        d¬«      5  t        |«      \  }}|sJ ‚t        j                  t        «      5  t        ||«      \  }}ddd«       d„ }| j                  d|«       t        j                  j                  d«      d	k7  sJ ‚t        j                  t        d
¬«      5  t        |«       ddd«       ddd«       y# 1 sw Y   ŒzxY w# 1 sw Y   ŒxY w# 1 sw Y   yxY w)z'Test get_namespace for ArrayAPI arrays.Úarray_api_strictr%   TrF   Nc                 ó   — | dk(  ryy )NÚSCIPY_ARRAY_APIÚ0© )Úkeys    r-   Úmock_getenvz1test_get_namespace_array_api.<locals>.mock_getenva   s   € ØÐ'Ò'Øð (r/   zos.environ.getrP   Ú1z#scipy's own support is not enabled.r5   )r<   rH   r9   r:   r   r   r=   Ú	TypeErrorÚsetattrÚosÚenvironÚgetÚRuntimeError)ÚmonkeypatchÚxprK   ÚX_xpr+   r,   rT   s          r-   Útest_get_namespace_array_apir_   S   s
  € ô 
×	Ñ	Ð/Ó	0€Bä�=‰=š)˜Ó%€DØ�:‰:�dÓ€DÜ	¨4Ô	0ñ  Ü)6°tÓ)<Ñ&ˆÐ&Ù%Ð%Ð%ä�]‰]œ9Ó%ñ 	GÜ-:¸4ÀÓ-FÑ*ˆFÐ*÷	Gò	ð 	×ÑÐ,¨kÔ:Ü�z‰z�~‰~Ð/Ó0°CÒ7Ð7Ð7Ü�]‰]ÜØ7ô
ñ 	 ô ˜$Ô÷		 ÷ ð  ÷	Gð 	Gú÷	 ð 	 ú÷ ð  ús=   Á,DÁ7D ÂADÃ#DÃ/DÄ D		ÄDÄD	ÄDÄD!Ú	array_apir9   rN   c                 ó¼   — t        j                  | «      }|j                  g d¢«      }t        |d|¬«      }t	        j                  |«      }|j
                  d   sJ ‚y)z=Test _asarray_with_order passes along order for NumPy arrays.)g333333ó?g333333@gffffff@ÚF)Úorderr]   ÚF_CONTIGUOUSN)r<   rH   r:   r   r9   Úflags)r`   r]   r$   ÚX_newÚX_new_nps        r-   Útest_asarray_with_orderrh   n   sP   € ô 
×	Ñ	˜YÓ	'€Bà
�
‰
’?Ó#€AÜ ¨°Ô4€Eä�}‰}˜UÓ#€HØ�>‰>˜.Ò)Ð)Ñ)r/   z$array_namespace, device_, dtype_namez"weights, axis, normalize, expected)NNTç      @T)g      @ri   ç      @r&   r'   é   F)TTFç      ø?rj   çš™™™™™Ù?gš™™™™™¹?)gš™™™™™ù?gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@)rm   çš™™™™™É?rn   g      ü?g      @©r(   é   rk   )r&   r&   r'   g      @g      @)r&   r'   r&   )r'   r'   r'   )NNFé   )rk   é   é	   é   é   r(   rs   )çš™™™™™é?çÍÌÌÌÌÌô?gÍÌÌÌÌÌü?gffffffö?gffffff@)rs   é   ru   rq   )rk   é   é   é   é   c                 óô  — t        | |«      }t        j                  g d¢g d¢g|¬«      }|j                  ||¬«      }|�*t        j                  ||¬«      }|j                  ||¬«      }t        d¬«      5  t	        ||||¬«      }	d d d «       t
        t        d«      k  st
        t        d	«      k\  rt        |«      t        	«      k(  sJ ‚t        	|«      }	t        |	|t        |«      ¬
«       y # 1 sw Y   ŒjxY w)Nr%   ©rp   rk   rt   ©Údtyper8   TrF   )ÚaxisÚweightsÚ	normalizeú2.0.0ú2.1.0)Úatol)r   r9   r:   r   r	   r"   r#   r   r
   r   r   )
Úarray_namespaceÚdevice_Ú
dtype_namer‚   r�   rƒ   Úexpectedr]   Úarray_inÚresults
             r-   Útest_averager�   z   sâ   € ôF 
˜o¨wÓ	7€BÜ�}‰}šiªÐ3¸:ÔF€HØ�z‰z˜(¨7ˆzÓ3€HØÐÜ—-‘- ¨zÔ:ˆØ—*‘*˜W¨W�*Ó5ˆä	¨4Ô	0ñ UÜ˜(¨°wÈ)ÔTˆ÷Uô ”M 'Ó*Ò*¬j¼MÈ'Ó<RÒ.Rô �hÓ¤6¨&£>Ò1Ð1Ð1ä˜v rÓ*€FÜ�F˜H¬>¸*Ó+EÖF÷Uð Uús   Á5C.Ã.C7z#array_namespace, device, dtype_name)Úinclude_numpy_namespacesc                 óâ  — t        | |«      }t        j                  ddg|¬«      dt        j                  ddg|¬«      z  z   }|j                  j                  }t        ||«      st        j                  | › d|› �«       |j                  ||¬«      }d	}t        d
¬«      5  t        j                  t        |¬«      5  t        |«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr'   r   r   y              ð?rp   r(   z does not support r8   z;Complex floating point values are not supported by average.TrF   r5   )r   r9   r:   r€   ÚnameÚhasattrr<   rJ   r   r=   ÚNotImplementedErrorr	   )r‡   r   r‰   r]   r‹   Úcomplex_type_nameÚerr_msgs          r-   Ú$test_average_raises_with_wrong_dtyper•   °   sÞ   € ô
 
˜o¨vÓ	6€Bä�}‰}˜a ˜V¨:Ô6¸¼e¿m¹mØ	
ˆAˆ�jô?ñ :ñ €Hð !Ÿ™×+Ñ+ÐÜ�2Ð(Ô)ä�‰�Ð'Ð'9Ð:KÐ9LÐMÔNà�z‰z˜(¨6ˆzÓ2€HàK€Gä¨$Ô/ñä�‰Ô)°Ô9ñô 	�Ô÷	÷ ÷ ñ ú÷ ð ús$   Â C%Â<CÃC%ÃC"	ÃC%Ã%C.zaxis, weights, error, error_msgzAxis must be specifiedr‚   )r&   r'   r(   rp   éÿÿÿÿz(Weights sum to zero, can't be normalizedc                 ó†  — t        | |«      }t        j                  g d¢g d¢g|¬«      }|j                  ||¬«      }t        j                  ||¬«      }|j                  ||¬«      }t        d¬«      5  t	        j
                  ||¬«      5  t        |||¬«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)	Nr%   r~   r   r8   TrF   r5   )r�   r‚   )r   r9   r:   r   r<   r=   r	   )	r‡   r   r‰   r�   r‚   ÚerrorÚ	error_msgr]   r‹   s	            r-   Ú+test_average_raises_with_invalid_parametersrš   É   s¥   € ô@ 
˜o¨vÓ	6€Bä�}‰}šiªÐ3¸:ÔF€HØ�z‰z˜(¨6ˆzÓ2€Hä�m‰m˜G¨:Ô6€GØ�j‰j˜¨ˆjÓ0€Gä	¨4Ô	0ñ 7´&·-±-ÀÈYÔ2Wñ 7Ü� ¨gÕ6÷7÷ 7÷ 7ñ 7ú÷ 7ð 7ús$   Á3B7ÂB+ÂB7Â+B4	Â0B7Â7C c                  ó8   — t        «       �J ‚t        d d«      �J ‚y )Nr�   r8   rR   r/   r-   Útest_device_none_if_no_inputrœ   õ   s#   € Ü‹8ÐÐÐä�$˜ÓÐ'Ð'Ñ'r/   c                  ó’  ‡—  G d„ d«      Š G ˆfd„d«      } t        j                  t        «      5  t         | d«      j                  «       d d d «       t	         | d«       | d«      «      �J ‚d}t        d	¬
«      5  t        j                  t        |¬«      5  t	         | d«       | d«      «       d d d «        | d«      } | d«      }|j                  t	        |«      k(  sJ ‚|j                  t	        ||«      k(  sJ ‚|j                  t	        |||«      k(  sJ ‚	 d d d «       y # 1 sw Y   ŒÙxY w# 1 sw Y   Œ€xY w# 1 sw Y   y xY w)Nc                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ú&test_device_inspection.<locals>.Devicec                 ó   — || _         y ©N©r�   )Úselfr�   s     r-   Ú__init__z/test_device_inspection.<locals>.Device.__init__þ   s	   € ØˆD�Ir/   c                 ó4   — | j                   |j                   k(  S r¡   r¢   )r£   r   s     r-   Ú__eq__z-test_device_inspection.<locals>.Device.__eq__  s   € Ø—9‘9 §¡Ñ+Ð+r/   c                 ó   — t        d«      ‚)NzDevice object is not hashable)rV   ©r£   s    r-   Ú__hash__z/test_device_inspection.<locals>.Device.__hash__  s   € ÜÐ;Ó<Ð<r/   c                 ó   — | j                   S r¡   r¢   r¨   s    r-   Ú__str__z.test_device_inspection.<locals>.Device.__str__  s   € Ø—9‘9Ðr/   N)Ú__name__Ú
__module__Ú__qualname__r¤   r¦   r©   r«   rR   r/   r-   ÚDevicerŸ   ý   s   „ ò	ò	,ò	=ó	r/   r¯   c                   ó   •— e Zd Zˆ fd„Zy)ú%test_device_inspection.<locals>.Arrayc                 ó    •—  ‰|«      | _         y r¡   r8   )r£   Údevice_namer¯   s     €r-   r¤   z.test_device_inspection.<locals>.Array.__init__  s   ø€ Ù  Ó-ˆD�Kr/   N)r¬   r­   r®   r¤   )r¯   s   €r-   ÚArrayr±   
  s   ø„ õ	.r/   r´   r   r3   Úmygpuz.Input arrays use different devices: cpu, mygpuTrF   r5   )r<   r=   rV   Úhashr   r   r>   )r´   r”   Úarray1Úarray2r¯   s       @r-   Útest_device_inspectionr¹   û   s%  ø€ ÷ñ ÷.ó .ô 
�‰”yÓ	!ñ %Ü‰U�8‹_×#Ñ#Ô$÷%ô ‘%˜“,¡ g£Ó/Ð7Ð7Ð7ð ?€GÜ	¨4Ô	0ñ 
?Ü�]‰]œ:¨WÔ5ñ 	1Ü‘5˜“<¡ w£Ô0÷	1ñ �x“ˆÙ�x“ˆà�}‰}¤ v£Ò.Ð.Ð.Ø�}‰}¤ v¨vÓ 6Ò6Ð6Ð6Ø�}‰}¤ v¨v°vÓ >Ò>Ð>Ñ>÷
?ð 
?÷%ð %ú÷	1ð 	1ú÷
?ð 
?ús0   ±D%Á=D=ÂD1Â2A)D=Ä%D.Ä1D:	Ä6D=Ä=EÚlibrary)r9   rN   ÚtorchzX,reduction,expectedéþÿÿÿ)rp   rk   ç      @)r�   ©ç      ð?r2   ç      @r¿   ç      @)rÁ   ç      @r½   rÀ   r½   g      à¿r2   rÂ   c                 óÎ   — t        j                  | «      }t        d¬«      5   ||j                  |«      «      }ddd«       t	        |«      }t        ||«       y# 1 sw Y   Œ"xY w)z-Check NaN reductions like _nanmin and _nanmaxTrF   N)r<   rH   r   r:   r
   r   )rº   r$   Ú	reductionrŠ   r]   rŒ   s         r-   Útest_nan_reductionsrÅ   .  s\   € ô` 
×	Ñ	˜WÓ	%€Bä	¨4Ô	0ñ *Ù˜2Ÿ:™: a›=Ó)ˆ÷*ô ˜v rÓ*€FÜ�F˜HÕ%÷	*ð *ús   ¢AÁA$znamespace, _device, _dtypec                 ót  — t        | |«      }g d¢g d¢g d¢g d¢g}|j                  ||¬«      }t        d¬«      5  t        |«      }d d d «       t	        |«      }t        j                  |d¬	«      }t        ||«       t        |«      r%t        j                  |«      j                  d
   sJ ‚y y # 1 sw Y   ŒixY w)Nr%   r~   )rr   r{   rs   )r1   é   rx   r8   TrF   ÚC)rc   ÚC_CONTIGUOUS)
r   r:   r   r   r
   r9   Úravelr   r   re   )Ú	namespaceÚ_deviceÚ_dtyper]   ÚarrayÚarray_xprŒ   rŠ   s           r-   Ú
test_ravelrÐ   g  s©   € ô 
˜i¨Ó	1€Bâš	¢9ªlÐ;€EØ�z‰z˜%¨ˆzÓ0€HÜ	¨4Ô	0ñ "Ü˜Ó!ˆ÷"ô ˜v rÓ*€FÜ�{‰{˜5¨Ô,€Hä�H˜fÔ%ä˜2ÔÜ�}‰}˜VÓ$×*Ñ*¨>Ò:Ð:Ñ:ð ÷"ð "ús   ºB.Â.B7Úcupyr»   c                 ó\  — t        j                  | «      }| dk(  rO|j                  j                  j	                  «       st        j
                  d«       |j                  g d¢d¬«      }n|j                  g d¢«      }t        ||¬«      }t        j                  g d¢«      }t        ||«       y)z0Check convert_to_numpy for GPU backed libraries.r»   ztest requires cudar¾   r7   r8   ©r]   N)
r<   rH   Úbackendsr7   Úis_builtrJ   r:   r
   r9   r   )rº   r]   ÚX_gpuÚX_cpuÚexpected_outputs        r-   Útest_convert_to_numpy_gpurÙ   {  sƒ   € ô 
×	Ñ	˜WÓ	%€Bà�'ÒØ�{‰{×Ñ×(Ñ(Ô*Ü�K‰KÐ,Ô-Ø—
‘
š?°6�
Ó:‰à—
‘
š?Ó+ˆä˜e¨Ô+€EÜ—m‘m¢OÓ4€OÜ�E˜?Õ+r/   c                  ó¸   — t        j                  d«      } | j                  g d¢d¬«      }t        || ¬«      }t	        j                  g d¢«      }t        ||«       y)z.Check convert_to_numpy for PyTorch CPU arrays.r»   r¾   r3   r8   rÓ   N)r<   rH   r:   r
   r9   r   )r»   ÚX_torchr×   rØ   s       r-   Útest_convert_to_numpy_cpurÜ   �  sH   € ä×Ñ Ó(€EØ�m‰mšO°EˆmÓ:€Gä˜g¨%Ô0€EÜ—m‘m¢OÓ4€OÜ�E˜?Õ+r/   c                   ó   — e Zd Zdd„Zy)ÚSimpleEstimatorNc                 ó<   — || _         |j                  d   | _        | S )Nr   )ÚX_ÚshapeÚn_features_)r£   r$   Úys      r-   ÚfitzSimpleEstimator.fit˜  s   € ØˆŒØŸ7™7 1™:ˆÔØˆr/   r¡   )r¬   r­   r®   rä   rR   r/   r-   rÞ   rÞ   —  s   „ ôr/   rÞ   zarray_namespace, converterc                 ó>   — | j                  «       j                  «       S r¡   )r3   r9   ©rÎ   s    r-   ú<lambda>rç   ¢  s   €  §	¡	£× 1Ñ 1Ó 3€ r/   c                 ó,   — t        j                  | «      S r¡   )r9   r:   ræ   s    r-   rç   rç   £  s   € ¬5¯=©=¸Ó+?€ r/   c                 ó"   — | j                  «       S r¡   )rZ   ræ   s    r-   rç   rç   ¤  s   € ˜uŸy™y›{€ r/   c                 óì   — t        j                  | «      }|j                  ddgg«      }t        «       j	                  |«      }t        ||«      }t        |j                  t        j                  «      sJ ‚y)z(Convert estimator attributes to ndarray.rw   rj   N)
r<   rH   r:   rÞ   rä   r   r*   rà   r9   Úndarray)r‡   Ú	converterr]   r$   ÚestÚnew_ests         r-   Ú!test_convert_estimator_to_ndarrayrï   ž  s_   € ô 
×	Ñ	˜_Ó	-€Bà
�
‰
�S˜#�J�<Ó €AÜ
Ó
×
Ñ
 Ó
"€Cä.¨s°IÓ>€GÜ�g—j‘j¤%§-¡-Ô0Ð0Ñ0r/   c                  óà   ‡— t        j                  d«      Št        j                  ddgg«      } t	        «       j                  | «      }t        |ˆfd„«      }t        |j                  d«      sJ ‚y)z0Convert estimator attributes to ArrayAPI arrays.rN   rw   rj   c                 ó&   •— ‰j                  | «      S r¡   )r:   )rÎ   r]   s    €r-   rç   z5test_convert_estimator_to_array_api.<locals>.<lambda>º  s   ø€ À"Ç*Á*ÈUÓBS€ r/   Ú__array_namespace__N)	r<   rH   r9   r:   rÞ   rä   r   r‘   rà   )rK   rí   rî   r]   s      @r-   Ú#test_convert_estimator_to_array_apiró   ²  s_   ø€ ô 
×	Ñ	Ð/Ó	0€Bä�=‰=˜3 ˜*˜Ó&€DÜ
Ó
×
Ñ
 Ó
%€Cä.¨sÓ4SÓT€GÜ�7—:‘:Ð4Ô5Ð5Ñ5r/   c                  ón  — t        «       } | j                  g d¢g d¢g«      }| j                  |dd¬«      }|j                  |u sJ ‚| j                  |dd¬«      }|j                  |j                  usJ ‚t	        j
                  t        d¬	«      5  | j                  |d
«       ddd«       y# 1 sw Y   yxY w)zDCheck reshape behavior with copy and is strict with non-tuple shape.r%   ro   )r–   F)Úcopy)rt   r&   Tzshape must be a tupler5   r–   N)r   r:   ÚreshapeÚbaser<   r=   rV   )r]   r$   Ú	X_no_copyÚX_copys       r-   Útest_reshape_behaviorrú   ¾  sŸ   € ä	Ó	€BØ
�
‰
’IšyÐ)Ó*€Aà—
‘
˜1˜e¨%�
Ó0€IØ�>‰>˜QÑÐÐà�Z‰Z˜˜6¨ˆZÓ-€FØ�;‰;˜aŸf™fÑ$Ð$Ð$ä	�‰”yÐ(?Ô	@ñ Ø
�
‰
�1�bÔ÷÷ ñ ús   ÂB+Â+B4c                  ó  — t        «       } | j                  | j                  | j                  «      sJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      rJ ‚t        | «      D ]  }| j                  |d«      rŒJ ‚ | j                  | j                  d«      sJ ‚| j                  | j                  d«      rJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      rJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      rJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      rJ ‚| j                  | j                  d«      rJ ‚| j                  | j                  d«      sJ ‚| j                  | j                  d«      sJ ‚t        j                  t         d¬«      5  | j                  | j                  d	«      sJ ‚	 d
d
d
«       y
# 1 sw Y   y
xY w)z2Test isdtype implementation from _NumPyAPIWrapper.zreal floatingÚboolzsigned integerzunsigned integerÚnumericzcomplex floatingzUnrecognized data typer5   ÚunknownN)r   ÚisdtypeÚfloat32Úfloat64Úint32r   rü   Úint16Úuint32Úuint16Úint64Úint8Ú	complex64Ú
complex128r<   r=   r>   )r]   r€   s     r-   Ú$test_get_namespace_array_api_isdtyper
  Í  s  € ä	Ó	€Bà�:‰:�b—j‘j "§*¡*Ô-Ð-Ð-Ø�:‰:�b—j‘j /Ô2Ð2Ð2Ø�:‰:�b—j‘j /Ô2Ð2Ð2Ø�z‰z˜"Ÿ(™( OÔ4Ð4Ð4ä'¨Ó+ò 2ˆØ�z‰z˜% Õ1Ð1Ð1ð2ð �:‰:�b—g‘g˜vÔ&Ð&Ð&Ø�z‰z˜"Ÿ*™* fÔ-Ð-Ð-à�:‰:�b—h‘hÐ 0Ô1Ð1Ð1Ø�z‰z˜"Ÿ)™)Ð%5Ô6Ð6Ð6à�:‰:�b—i‘iÐ!3Ô4Ð4Ð4Ø�z‰z˜"Ÿ(™(Ð$6Ô7Ð7Ð7à�:‰:�b—h‘h 	Ô*Ð*Ð*Ø�:‰:�b—j‘j )Ô,Ð,Ð,Ø�:‰:�b—i‘i Ô+Ð+Ð+à�z‰z˜"Ÿ*™*Ð&8Ô9Ð9Ð9à�z‰z˜"Ÿ'™'Ð#5Ô6Ð6Ð6Ø�:‰:�b—l‘lÐ$6Ô7Ð7Ð7Ø�:‰:�b—m‘mÐ%7Ô8Ð8Ð8ä	�‰”zÐ)AÔ	Bñ /Ø�z‰z˜"Ÿ(™( IÔ.Ð.Ñ.÷/÷ /ñ /ús   ÉI;É;Jc                 ó’   — t        | |«      }t        rt        |«      |j                  k(  sJ ‚y t        |«      |j                  k(  sJ ‚y r¡   )r   r    r   r  r  )rË   rÌ   rÍ   r]   s       r-   Útest_indexing_dtyper  ð  sA   € ô 
˜i¨Ó	1€BåÜ˜bÓ! R§X¡XÒ-Ð-Ñ-ä˜bÓ! R§X¡XÒ-Ð-Ñ-r/   c                 óx   — t        | |«      }|dk(  r|j                  n|j                  }t        ||«      |k(  sJ ‚y )NÚmps)r   r   r  r   )rË   rÌ   rÍ   r]   Úexpected_dtypes        r-   Útest_max_precision_float_dtyper  ü  s;   € ô 
˜i¨Ó	1€BØ#*¨eÒ#3�R—Z’Z¸¿¹€NÜ% b¨'Ó2°nÒDÐDÑDr/   zarray_namespace, device, _ÚinvertÚassume_uniqueÚelement_size)rt   r1   ry   Ú	int_dtype)r  r  r  Úuint8c                 óø  — t        | |«      }|dz  }dt        j                  |«      j                  |df«      j	                  |«      z  }	t        j
                  t        j                  d«      |¬«      }
|j                  |	|¬«      }|j                  |
|¬«      }t        j                  |	|
||¬«      }t        d¬«      5  t        |||||¬«      }d d d «       t        t        |¬	«      |«       y # 1 sw Y   Œ!xY w)
Nr'   ry   r   r8   )ÚelementÚtest_elementsr  r  TrF   )r  r  r]   r  r  rÓ   )r   r9   Úarangerö   ÚastyperÎ   r:   Úisinr   r   r   r
   )r‡   r   r@   r  r  r  r  r]   Úrr  r  Ú
element_xpÚtest_elements_xprŠ   rŒ   s                  r-   Ú	test_isinr    së   € ô 
˜o¨vÓ	6€BØ˜Ñ€AØ”%—,‘,˜|Ó,×4Ñ4°a¸°VÓ<×CÑCÀIÓNÑN€GÜ—K‘K¤§¡¨RÓ 0¸	ÔB€MØ—‘˜G¨F�Ó3€JØ—z‘z -¸�zÓ?ÐÜ�z‰zØØ#Ø#Øô	€Hô 
¨4Ô	0ñ 
ÜØØ*ØØ'Øô
ˆ÷
ô Ô(¨°BÔ7¸ÕB÷
ð 
ús   Â?C0Ã0C9c                  ó’  — t        j                  d«      } t        j                  d«      }| j                  dd¬«      }t        j                  d«      }t	        |«      \  }}}|t        |«      d   u sJ ‚|rJ ‚|�J ‚t        d¬«      5  t	        |«      \  }}}||u sJ ‚|sJ ‚||j                  k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)	Nr»   zarray_api_compat.torchr(   r3   r8   r   TrF   )r<   rH   r  r9   r   r   r   r   )r»   Úxp_torchÚsome_torch_tensorÚsome_numpy_arrayrË   Úis_array_apir   s          r-   Útest_get_namespace_and_devicer%  '  sà   € ä×Ñ Ó(€EÜ×"Ñ"Ð#;Ó<€HØŸ™ Q¨u˜Ó5ÐÜ—|‘| A“Ðô '?Ð?PÓ&QÑ#€Iˆ|˜VØœÐ&6Ó7¸Ñ:Ñ:Ð:Ð:ÙÐÐØˆ>Ðˆ>ô 
¨4Ô	0ñ 2Ü*BÐCTÓ*UÑ'ˆ	�< Ø˜HÑ$Ð$Ð$ÙÐˆ|ØÐ*×1Ñ1Ò1Ð1Ñ1÷	2÷ 2ñ 2ús   Â+B=Â=CÚcsr_containerr�   )r   r&   Nr–   r¼   Úsample_weight_type)NÚintÚfloatc                 ó@  — ddl m} t        | |«      }t        j                  g d¢g d¢g d¢g d¢g d¢g«      }|dk(  rt        j
                  g d	¢«      }	n!|d
k(  rt        j
                  g d¢|¬«      }	nd }	 | ||«      ||	¬«      }
|j                  ||¬«      }t        d¬«      5  t        |||	||¬«      }d d d «       t        t        |¬«      |
«       t        t        d«      k  st        t        d«      k\  rt        |«      t        |«      k(  sJ ‚y y # 1 sw Y   Œ_xY w)Nr   )Úcount_nonzero)r   r(   r   )r'   r–   r   )r   r   r   )rs   r{   rr   )rp   r   rk   r(  )r&   r'   r'   r(   r&   r)  )g      à?rl   rv   gš™™™™™	@g333333@r   )r�   Úsample_weightr8   TrF   )r�   r,  r]   r   rÓ   r„   r…   )Úsklearn.utils.sparsefuncsr+  r   r9   rÎ   r:   r   r   r   r
   r"   r#   r   )r‡   rˆ   r‰   r&  r�   r'  Úsparse_count_nonzeror]   rÎ   r,  rŠ   rÏ   rŒ   s                r-   Útest_count_nonzeror/  @  s	  € õ Pä	˜o¨wÓ	7€BÜ�K‰Kš¢J²	º9ÂiÐPÓQ€EØ˜UÒ"ÜŸ™¢oÓ6‰Ø	˜wÒ	&ÜŸ™Ò&?ÀzÔR‰àˆÙ#Ù�eÓ 4°}ô€Hð �z‰z˜%¨ˆzÓ0€Hä	¨4Ô	0ñ 
ÜØ˜4¨}ÀÈGô
ˆ÷
ô
 Ô% f°Ô4°hÔ?ä”M 'Ó*Ò*¬j¼MÈ'Ó<RÒ.Rô �hÓ¤6¨&£>Ò1Ð1Ñ1ð /S÷
ð 
ús   Â%DÄDÚwrapc                 ó  — t        | |«      }t        j                  dt        j                  ¬«      }|j	                  |«      }t        |d|d|¬«       t        j                  |d|¬«       t        t        ||¬«      |«       y )N)rk   rp   r   r&   F)Úvaluer]   Ú	add_valuer0  )Úvalr0  rÓ   )	r   r9   r?   r  r:   r   Úfill_diagonalr   r
   )r‡   rˆ   r‰   r0  r]   Úarray_nprÏ   s          r-   Útest_fill_or_add_to_diagonalr7  e  sf   € ô
 
˜o¨wÓ	7€BÜ�{‰{˜6¬¯©Ô5€HØ�z‰z˜(Ó#€HÜ˜X¨Q°2ÀÈTÕRÜ	×Ñ˜ a¨dÕ3ÜÔ(¨°bÔ9¸8ÕDr/   Údispatchc                 óº  —  | t        j                  dgg«      «       | t        j                  dgg«      «      }}	 t        |¬«      5  t        ||«      �J ‚t        |t        j                  dg«      «      �J ‚t	        ||«      d   �J ‚t	        |t        j                  dg«      «      d   �J ‚	 d d d «       y # 1 sw Y   y xY w# t
        $ r t        d«      ‚w xY w)Nr&   r'   rF   z!array_api_compat is not installed)r9   rÎ   r   r   r   ÚImportErrorr   )r&  r8  ÚaÚbs       r-   Útest_sparse_devicer=  r  sÞ   € ñ œŸ™ q c UÓ+Ó,©m¼E¿K¹KÈ!ÈÈÓ<NÓ.O€q€Að<Ü¨xÔ8ñ 	LÜ˜!˜Q“<Ð'Ð'Ð'Ü˜!œUŸ[™[¨!¨Ó-Ó.Ð6Ð6Ð6Ü+¨A¨qÓ1°!Ñ4Ð<Ð<Ð<Ü+¨A¬u¯{©{¸A¸3Ó/?Ó@ÀÑCÐKÐKÑK÷		L÷ 	Lñ 	Lûô
 ò <ÜÐ:Ó;Ð;ð<ús*   ¼C ÁA'B9Â0C Â9CÂ>C ÃC ÃC)MrX   Ú	functoolsr   r9   r<   Únumpy.testingr   Úsklearn._configr   Úsklearn.baser   Úsklearn.utils._array_apir   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úsklearn.utils._testingr   r   r   r   Úsklearn.utils.fixesr    r!   r"   r#   ÚmarkÚparametrizer:   r.   rB   rL   r_   rh   r�   r•   rV   r>   ÚZeroDivisionErrorrš   rœ   r¹   ÚnanÚinfrÅ   rÐ   rÙ   rÜ   rÞ   rï   ró   rú   r
  r  r  r  r%  r/  r7  r=  rR   r/   r-   ú<module>rJ     sÄ  ðÛ 	Ý ã Û Ý )å *Ý &÷÷ ÷ ÷ ÷ õ ÷.ó ÷ UÓ Tð ‡�×Ñ˜˜}˜uŸ}™}ªYÓ7ºÐCÓDñ&ó Eð&ò	(ð )ñ0ó )ð0ð( )ñ ó )ð ð4 ‡�×Ñ˜ wÐ0BÐ&CÓDñ*ó Eð*ð ‡�×ÑØ*Ñ,UÓ,Wóð ‡�×ÑØ(ð 	 Ø	ˆq�$šÐ(Ø	ˆq�$˜˜A˜ÐØ
�ˆ˜˜4¢Ð+Ú	˜a ¨¨S zÐ2Ø
ˆsˆ�Q˜šoÐ.Ú	˜!˜T D¨$ <Ð0Ø
ˆQˆ��Dš)Ð$Ú	�A�t˜d D˜\Ð*Ú
’YÐ	  Dª/Ð:Ú
’YÐ	  D¨1¨a¨&Ð1àØ	ˆq�%šÐ#Ø	ˆq�%˜!˜R˜Ð!Ø
�ˆ˜˜5¢)Ð,Ú	˜a ¨¨A¨Ð/Ø
ˆsˆ�Q˜šÐ/Ú	˜!˜U S¨# JÐ/Ø
ˆQˆ��Eš;Ð'Ú	�A�u˜q "˜gÐ&Ú
’YÐ	  Eª;Ð7Ú
’YÐ	  E¨A¨r¨7Ð3ð1óñ:Gó;óð@Gð, ‡�×ÑØ)Ù-ÀuÔMóñó	ðð* ‡�×ÑØ)Ù-ÀtÔLóð ‡�×ÑØ%ð Ø�ˆFØØ$ð		
ð Ø�ˆVˆHà˜Ð#Øð	
ð ÚØØð		
ð 
ˆR�ˆGÐ&Ð(RÐSð)óñ27ó3ó	ð:7ò(ð )ñ,?ó )ð,?ðd )Ø‡�×Ñ˜Ò$JÓKØ‡�×ÑØà
ˆQ�—	‘	Ð	˜G QÐ'Ø
ˆR�%—)‘)�Ð	˜g rÐ*Ø
�)‰)�U—Y‘YÐ	 ¨%¯)©)Ð4â˜Ÿ™ E§I¡I¨u¯y©yÐ9º;ÐGÙ�G !Ô$Úð	
ò ˜Ÿ™ E§I¡I¨u¯y©yÐ9º;ÐGÙ�G !Ô$Ø�%—)‘)˜SÐ!ð	
ð
 ˆQ�—	‘	Ð	˜G QÐ'Ø
ˆQ�—	‘	Ð	˜G QÐ'Ø�9‰9ˆ*�u—y‘y�jÐ	! 7¨U¯Y©Y¨JÐ7â˜Ÿ™ E§I¡I¨u¯y©yÐ9º;ÐGÙ�G !Ô$Úð	
ò ˜Ÿ™ E§I¡I¨u¯y©yÐ9º;ÐGÙ�G !Ô$Ø�%—)‘)˜SÐ!ð	
ð
 ˆQ�—	‘	Ð	˜H cÐ*Ø
ˆR�%—)‘)�Ð	˜h¨Ð-Ø�9‰9ˆ*�u—y‘y�jÐ	! 8¨e¯i©i¨ZÐ8â˜Ÿ™ E§I¡I¨u¯y©yÐ9º;ÐGÙ�H 1Ô%Úð	
ò ˜Ÿ™ E§I¡I¨u¯y©yÐ9º;ÐGÙ�H 1Ô%Ø�%—)‘)˜SÐ!ð	
ðG(ó+ñX&óY+ó Ló )ð\&ð ‡�×ÑØ Ñ"KÓ"Móñ;óð;ð" )Ø‡�×Ñ˜ V¨WÐ$5Ó6ñ,ó 7ó )ð,ò ,ô�mô ð )Ø‡�×ÑØ à	Ñ3Ð4Ø	Ñ?Ð@Ø	Ñ*Ð+ðóñ1óó )ð1ð )ñ6ó )ð6òò /ðF ‡�×ÑØ Ñ"KÓ"Móñ.óð.ð ‡�×ÑØ Ñ"KÓ"MóñEóðEð ‡�×ÑØ Ñ"KÓ"Móð ‡�×Ñ˜ D¨% =Ó1Ø‡�×Ñ˜¨4°¨-Ó8Ø‡�×Ñ˜ªÓ5Ø‡�×Ñ˜Ò&JÓKñCó Ló 6ó 9ó 2óðCò62ð2 ‡�×ÑØ*Ñ,UÓ,Wóð ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜Ò!5Ó6Ø‡�×ÑÐ-Ò/EÓFñ2ó Gó 7ó :óð2ð> ‡�×ÑØ*Ñ,UÓ,Wóð ‡�×Ñ˜ $¨ Ó/ñEó 0óðEð ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜ d¨E ]Ó3ñ	<ó 4ó :ñ	<r/   