§
    §éUgFN  ã                   ó*  — 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 d dlmZm Z  d dl!m"Z"m#Z#m$Z$m%Z% ej&         '                    d	 ej(        g d
¢¦  «        g d
¢g¦  «        d„ ¦   «         Z)d„ Z*e d„ ¦   «         Z+e d„ ¦   «         Z, G d„ de¦  «        Z-d„ Z.ej&         '                    dddg¦  «        d„ ¦   «         Z/d„ Z0ej&         '                    d e¦   «         ¦  «        ej&         '                    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 d0¢fdddd1d2gfddgd dg d
¢fg d ¢ddd3d4gfd#d$gd dg d5¢fg d&¢ddd6d7gfddgd dg d8¢fg d*¢ddd4d9gfg d
¢g d
¢gd dg d:¢fg d-¢g d.¢gddd;d<gfg¦  «        d=„ ¦   «         ¦   «         Z1ej&         '                    d> ed¬?¦  «        ¦  «        d@„ ¦   «         Z2ej&         '                    d> ed¬?¦  «        ¦  «        ej&         '                    dAdddge3dBfd ddgge4e3fdCfd g dD¢e4dCfd dEdge5dFff¦  «        dG„ ¦   «         ¦   «         Z6dH„ Z7dI„ Z8e ej&         '                    dJg dK¢¦  «        ej&         '                    dLddej9        gedfddMej9         gedMfej:        ej:        geej:        fg d
¢ej9        ej9        ej9        gg dN¢g eed ¬O¦  «        g dP¢fg d
¢ej9        ej9        ej9        gg dN¢g eed¬O¦  «        dQej9        dRgfddej9        gedfddej9        gedfej:         ej:         geej:         fg d
¢ej9        ej9        ej9        gg dN¢g eed ¬O¦  «        g dS¢fg d
¢ej9        ej9        ej9        gg dN¢g eed¬O¦  «        dTej9        dUgfg
¦  «        dV„ ¦   «         ¦   «         ¦   «         Z;ej&         '                    dW e¦   «         ¦  «        dX„ ¦   «         Z<e ej&         '                    dJg dY¢¦  «        dZ„ ¦   «         ¦   «         Z=d[„ Z> G d\„ d]e
¦  «        Z?e ej&         '                    d^d_d`„ fdda„ fdbdc„ fg¦  «        dd„ ¦   «         ¦   «         Z@e de„ ¦   «         ZAdf„ ZBej&         '                    dgeeg¦  «        dh„ ¦   «         ZCej&         '                    dW e¦   «         ¦  «        di„ ¦   «         ZDdj„ ZEej&         '                    d e¦   «         ¦  «        ej&         '                    dke#¦  «        ej&         '                    dlg dm¢¦  «        ej&         '                    dng do¢¦  «        dp„ ¦   «         ¦   «         ¦   «         ¦   «         ZFdS )qé    N)Úpartial)Úassert_allclose)Úconfig_context)ÚBaseEstimator)Ú_ArrayAPIWrapperÚ_asarray_with_orderÚ_atol_for_typeÚ_averageÚ_convert_to_numpyÚ_count_nonzeroÚ _estimator_with_converted_arraysÚ_is_numpy_namespaceÚ_nanmaxÚ_nanminÚ_NumPyAPIWrapperÚ_ravelÚdeviceÚget_namespaceÚget_namespace_and_deviceÚindexing_dtypeÚsupported_float_dtypesÚ)yield_namespace_device_dtype_combinations)Ú_array_api_for_testsÚ'skip_if_array_api_compat_not_configured)Ú	_IS_32BITÚCSR_CONTAINERSÚ
np_versionÚparse_versionÚX©é   é   é   c                 ó`   — t          | ¦  «        \  }}t          |t          ¦  «        sJ ‚|rJ ‚dS )z.Check that get_namespace returns NumPy wrapperN)r   Ú
isinstancer   )r   Úxp_outÚis_array_api_compliants      úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/utils/tests/test_array_api.pyÚ"test_get_namespace_ndarray_defaultr)   %   s@   € õ &3°1Ñ%5Ô%5Ñ"€FÐ"Ý�fÕ.Ñ/Ô/Ð/Ð/Ð/Ø%Ð%Ð%Ð%Ð%Ð%ó    c                  óD  — t          j        g d¢¦  «        } t          | ¦  «        \  }}|                     ddd¬¦  «        }t	          |dgdz  ¦  «         t          j        t          d¬¦  «        5  |                     dd¬	¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )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_devicer=   -   sã   € åŒ�i�i�iÑ Ô €AÝ˜aÑ Ô �I€FˆAà—’˜R¨C¸�Ñ>Ô>€JÝ�J  ¨¡
Ñ+Ô+Ð+å	Œ•zÐ)=Ð	>Ñ	>Ô	>ð (ð (Ø�Š�R ˆÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   Á0BÂBÂBc                  ó8  — t          j        d¦  «        } t          j        g d¢g¦  «        }t	          d¬¦  «        5  t          |¦  «        \  }}|sJ ‚t          t          d¦  «        k    r|t          u sJ ‚n|| j        u sJ ‚ddd¦  «         dS # 1 swxY w Y   dS )z%Test get_namespace on NumPy ndarrays.Úarray_api_compatr    T©Úarray_api_dispatchú2.0.0N)r7   Úimportorskipr4   r5   r   r   r   r   )r?   ÚX_npr&   r'   s       r(   Ú(test_get_namespace_ndarray_with_dispatchrE   9   sø   € õ Ô*Ð+=Ñ>Ô>ÐåŒ=˜)˜)˜)˜Ñ%Ô%€Då	¨4Ð	0Ñ	0Ô	0ð 4ð 4Ý)6°tÑ)<Ô)<Ñ&ˆÐ&Ø%Ð%Ð%Ð%Ý� wÑ/Ô/Ò/Ð/à�U�?�?�?�?�?ð Ð-Ô3Ð3Ð3Ð3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4s   ¼ABÂBÂBc                  óŒ  — t          j        d¦  «        } t          j        g d¢g¦  «        }|                      |¦  «        }t	          d¬¦  «        5  t          |¦  «        \  }}|sJ ‚t          j        t          ¦  «        5  t          ||¦  «        \  }}ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )z'Test get_namespace for ArrayAPI arrays.Úarray_api_strictr    Tr@   N)r7   rC   r4   r5   r   r   r8   Ú	TypeError)ÚxprD   ÚX_xpr&   r'   s        r(   Útest_get_namespace_array_apirK   K   sn  € õ 
Ô	Ð/Ñ	0Ô	0€BåŒ=˜)˜)˜)˜Ñ%Ô%€DØ�:Š:�dÑÔ€DÝ	¨4Ð	0Ñ	0Ô	0ð Gð GÝ)6°tÑ)<Ô)<Ñ&ˆÐ&Ø%Ð%Ð%Ð%åŒ]�9Ñ%Ô%ð 	Gð 	GÝ-:¸4ÀÑ-FÔ-FÑ*ˆFÐ*ð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð	Gð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs6   Á0B9ÂB!ÂB9Â!B%	Â%B9Â(B%	Â)B9Â9B=Ã B=c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú_AdjustableNameAPITestWrapperz:API wrapper that has an adjustable name. Used for testing.c                 óZ   •— t          ¦   «                              |¬¦  «         || _        d S )N)Úarray_namespace)ÚsuperÚ__init__Ú__name__)ÚselfrO   ÚnameÚ	__class__s      €r(   rQ   z&_AdjustableNameAPITestWrapper.__init__]   s)   ø€ Ý‰Œ×Ò¨ÐÑ9Ô9Ð9ØˆŒˆˆr*   )rR   Ú
__module__Ú__qualname__Ú__doc__rQ   Ú__classcell__)rU   s   @r(   rM   rM   Z   s>   ø€ € € € € ØDÐDðð ð ð ð ð ð ð ð r*   rM   c                  óf  — t          j        d¦  «        } t          | d¦  «        }t          |¦  «        }|                     g d¢g d¢g|j        ¬¦  «        }|                     ||j        ¦  «        }|j        |j        k    sJ ‚|                     ||j        ¬¦  «        }|j        |j        k    sJ ‚dS )z6Test _ArrayAPIWrapper for ArrayAPIs that is not NumPy.rG   r    ©r#   é   é   ©ÚdtypeN)	r7   rC   rM   r   r5   Úfloat64ÚastypeÚfloat32r_   )rG   Úxp_rI   r   ÚX_converteds        r(   Útest_array_api_wrapper_astypere   b   s´   € åÔ*Ð+=Ñ>Ô>ÐÝ
'Ð(8Ð:LÑ
MÔ
M€CÝ	˜#Ñ	Ô	€Bà
�
Š
�Y�Y�Y 	 	 	Ð*°2´:ˆ
Ñ>Ô>€AØ—)’)˜A˜rœzÑ*Ô*€KØÔ ¤
Ò*Ð*Ð*Ð*à—*’*˜Q b¤j�*Ñ1Ô1€KØÔ ¤
Ò*Ð*Ð*Ð*Ð*Ð*r*   Ú	array_apir4   rG   c                 óÆ   — t          j        | ¦  «        }|                     g d¢¦  «        }t          |d|¬¦  «        }t	          j        |¦  «        }|j        d         sJ ‚dS )z=Test _asarray_with_order passes along order for NumPy arrays.©ç333333ó?ç333333@gffffff@ÚF©ÚorderrI   ÚF_CONTIGUOUSN)r7   rC   r5   r   r4   Úflags)rf   rI   r   ÚX_newÚX_new_nps        r(   Útest_asarray_with_orderrr   p   se   € õ 
Ô	˜YÑ	'Ô	'€Bà
�
Š
�?�?�?Ñ#Ô#€AÝ ¨°Ð4Ñ4Ô4€EåŒ}˜UÑ#Ô#€HØŒ>˜.Ô)Ð)Ð)Ð)Ð)Ð)r*   c                  ó8  — t          j        d¦  «        } t          | d¦  «        }t          j        g d¢g d¢gd¬¦  «        }|                     |¦  «        }t          |d|¬¦  «        }t          j        |¦  «        }|j        d         sJ ‚|j        d	         rJ ‚d
S )z<Test _asarray_with_order ignores order for Generic ArrayAPI.rG   rh   )rj   g      @ri   ÚC©rm   rk   rl   ÚC_CONTIGUOUSrn   N)r7   rC   rM   r4   r5   r   ro   )rI   rc   r   rp   rq   s        r(   Útest_asarray_with_order_ignoredrw   |   s¢   € å	Ô	Ð/Ñ	0Ô	0€BÝ
'¨Ð,>Ñ
?Ô
?€CåŒ���¨¨¨Ð8ÀÐDÑDÔD€AØ�Š�A‰Œ€Aå ¨°Ð5Ñ5Ô5€EåŒ}˜UÑ#Ô#€HØŒ>˜.Ô)Ð)Ð)Ð)ØŒ~˜nÔ-Ð-Ð-Ð-Ð-Ð-r*   z$array_namespace, device_, dtype_namez"weights, axis, normalize, expected)NNTç      @T)g      @rx   ç      @r!   r"   r]   F)TTFç      ø?ry   çš™™™™™Ù?gš™™™™™¹?)gš™™™™™ù?gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@)r{   çš™™™™™É?r|   g      ü?g      @r[   )r!   r!   r"   g      @g      @)r!   r"   r!   )r"   r"   r"   )NNFé   )r]   é   é	   é   é   r#   r   )çš™™™™™é?çÍÌÌÌÌÌô?gÍÌÌÌÌÌü?gffffffö?gffffff@)r   é   r�   r}   )r]   é   é   é   é   c                 ób  — t          | |¦  «        }t          j        g d¢g d¢g|¬¦  «        }|                     ||¬¦  «        }|�-t          j        ||¬¦  «        }|                     ||¬¦  «        }t          d¬¦  «        5  t	          ||||¬¦  «        }	d d d ¦  «         n# 1 swxY w Y   t
          t          d¦  «        k     st
          t          d	¦  «        k    r"t          |¦  «        t          |	¦  «        k    sJ ‚t          |	|¦  «        }	t          |	|t          |¦  «        ¬
¦  «         d S )Nr    ©r\   r]   r€   r^   r3   Tr@   )ÚaxisÚweightsÚ	normalizerB   ú2.1.0)Úatol)r   r4   r5   r   r
   r   r   r   r   r   r	   )
rO   Údevice_Ú
dtype_namerŒ   r‹   r�   ÚexpectedrI   Úarray_inÚresults
             r(   Útest_averager•   ‹   s€  € õF 
˜o¨wÑ	7Ô	7€BÝŒ}˜i˜i˜i¨¨¨Ð3¸:ÐFÑFÔF€HØ�zŠz˜(¨7ˆzÑ3Ô3€HØÐÝ”- ¨zÐ:Ñ:Ô:ˆØ—*’*˜W¨W�*Ñ5Ô5ˆå	¨4Ð	0Ñ	0Ô	0ð Uð UÝ˜(¨°wÈ)ÐTÑTÔTˆðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uõ •M 'Ñ*Ô*Ò*Ð*­j½MÈ'Ñ<RÔ<RÒ.RÐ.Rõ �hÑÔ¥6¨&¡>¤>Ò1Ð1Ð1Ð1å˜v rÑ*Ô*€FÝ�F˜H­>¸*Ñ+EÔ+EÐFÑFÔFÐFÐFÐFs   ÂB#Â#B'Â*B'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|› �¦  «         |                     ||¬¦  «        }d	}t          d
¬¦  «        5  t          j	        t          |¬¦  «        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr"   r   r^   y              ð?r\   r#   z does not support r3   z;Complex floating point values are not supported by average.Tr@   r0   )r   r4   r5   r_   rT   Úhasattrr7   Úskipr   r8   ÚNotImplementedErrorr
   )rO   r   r‘   rI   r“   Úcomplex_type_nameÚerr_msgs          r(   Ú$test_average_raises_with_wrong_dtyper�   Á   s�  € õ
 
˜o¨vÑ	6Ô	6€BåŒ}˜a ˜V¨:Ð6Ñ6Ô6¸½e¼mØ	
ˆAˆ�jð?ñ ?ô ?ñ :ñ €Hð !œÔ+ÐÝ�2Ð(Ñ)Ô)ð OåŒ�ÐMÐMÐ:KÐMÐMÑNÔNÐNà�zŠz˜(¨6ˆzÑ2Ô2€HàK€Gå¨$Ð/Ñ/Ô/ðð åŒÕ)°Ð9Ñ9Ô9ðð õ 	�ÑÔÐð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   Â#C3Â?CÃC3ÃC	ÃC3Ã"C	Ã#C3Ã3C7Ã:C7zaxis, weights, error, error_msgzAxis must be specifiedrŒ   )r!   r"   r#   r\   éÿÿÿÿz(Weights sum to zero, can't be normalizedc                 ó¸  — t          | |¦  «        }t          j        g d¢g d¢g|¬¦  «        }|                     ||¬¦  «        }t          j        ||¬¦  «        }|                     ||¬¦  «        }t          d¬¦  «        5  t	          j        ||¬¦  «        5  t          |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )	Nr    rŠ   r^   r3   Tr@   r0   )r‹   rŒ   )r   r4   r5   r   r7   r8   r
   )	rO   r   r‘   r‹   rŒ   ÚerrorÚ	error_msgrI   r“   s	            r(   Ú+test_average_raises_with_invalid_parametersr¢   Ú   sf  € õ@ 
˜o¨vÑ	6Ô	6€BåŒ}˜i˜i˜i¨¨¨Ð3¸:ÐFÑFÔF€HØ�zŠz˜(¨6ˆzÑ2Ô2€HåŒm˜G¨:Ð6Ñ6Ô6€GØ�jŠj˜¨ˆjÑ0Ô0€Gå	¨4Ð	0Ñ	0Ô	0ð 7ð 7µ&´-ÀÈYÐ2WÑ2WÔ2Wð 7ð 7Ý� ¨gÐ6Ñ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s6   ÂCÂB7Â+CÂ7B;	Â;CÂ>B;	Â?CÃCÃCc                  ó`  — t          j        d¦  «        } t          j        t          | ¬¦  «        5  t          ¦   «          d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        } t          j        t          | ¬¦  «        5  t          d d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzzAt least one input array expected after filtering with remove_none=True, remove_types=[str]. Got none. Original types: [].r0   z‡At least one input array expected after filtering with remove_none=True, remove_types=[str]. Got none. Original types: [NoneType, str].rT   )ÚreÚescaper7   r8   r9   r   )rœ   s    r(   Útest_device_raises_if_no_inputr¦     s1  € ÝŒið	<ñô €Gõ 
Œ•z¨Ð	1Ñ	1Ô	1ð ð Ý‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Œið	Iñô €Gõ 
Œ•z¨Ð	1Ñ	1Ô	1ð ð Ýˆt�VÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s#   °AÁAÁAÂB#Â#B'Â*B'c                  óX  ‡—  G d„ d¦  «        Š G ˆfd„d¦  «        } t          j        t          ¦  «        5  t           | d¦  «        j        ¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t
          |¬¦  «        5  t	           | d¦  «         | d	¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y    | d¦  «        } | d¦  «        }|j        t	          |¦  «        k    sJ ‚|j        t	          ||¦  «        k    sJ ‚|j        t	          |||¦  «        k    sJ ‚d S )
Nc                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ú&test_device_inspection.<locals>.Devicec                 ó   — || _         d S ©N©rT   )rS   rT   s     r(   rQ   z/test_device_inspection.<locals>.Device.__init__  s   € ØˆDŒIˆIˆIr*   c                 ó"   — | j         |j         k    S r«   r¬   )rS   r   s     r(   Ú__eq__z-test_device_inspection.<locals>.Device.__eq__  s   € Ø”9 ¤Ò+Ð+r*   c                 ó    — t          d¦  «        ‚)NzDevice object is not hashable)rH   ©rS   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Ðr*   N)rR   rV   rW   rQ   r®   r±   r³   © r*   r(   ÚDevicer©     sP   € € € € € ð	ð 	ð 	ð	,ð 	,ð 	,ð	=ð 	=ð 	=ð	ð 	ð 	ð 	ð 	r*   rµ   c                   ó   •— e Zd Zˆ fd„ZdS )ú%test_device_inspection.<locals>.Arrayc                 ó(   •—  ‰|¦  «        | _         d S r«   r3   )rS   Údevice_namerµ   s     €r(   rQ   z.test_device_inspection.<locals>.Array.__init__%  s   ø€ Ø ˜& Ñ-Ô-ˆDŒKˆKˆKr*   N)rR   rV   rW   rQ   )rµ   s   €r(   ÚArrayr·   $  s.   ø€ € € € € ð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.r*   rº   r   z.Input arrays use different devices: cpu, mygpur0   r.   Úmygpu)r7   r8   rH   Úhashr   r9   )rº   rœ   Úarray1Úarray2rµ   s       @r(   Útest_device_inspectionr¿     så  ø€ ðð ð ð ð ñ ô ð ð.ð .ð .ð .ð .ð .ð .ñ .ô .ð .õ 
Œ•yÑ	!Ô	!ð %ð %ÝˆUˆU�8‰_Œ_Ô#Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð ?€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð -ð -Ýˆuˆu�U‰|Œ|˜U˜U 7™^œ^Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð ˆU�8‰_Œ_€FØˆU�8‰_Œ_€FàŒ=�F 6™NœNÒ*Ð*Ð*Ð*ØŒ=�F 6¨6Ñ2Ô2Ò2Ð2Ð2Ð2ØŒ=�F 6¨6°6Ñ:Ô:Ò:Ð:Ð:Ð:Ð:Ð:s#   ·A!Á!A%Á(A%Â	#B8Â8B<Â?B<Úlibrary)r4   rG   ÚtorchzX,reduction,expectedéþÿÿÿ)r\   r]   ç      @)r‹   ©ç      ð?r-   ç      @rÅ   ç      @)rÇ   g      @rÃ   rÆ   rÃ   c                 óú   — t          j        | ¦  «        }t          d¬¦  «        5   ||                     |¦  «        ¦  «        }ddd¦  «         n# 1 swxY w Y   t	          ||¦  «        }t          ||¦  «         dS )z-Check NaN reductions like _nanmin and _nanmaxTr@   N)r7   rC   r   r5   r   r   )rÀ   r   Ú	reductionr’   rI   r”   s         r(   Útest_nan_reductionsrÊ   @  s»   € õF 
Ô	˜WÑ	%Ô	%€Bå	¨4Ð	0Ñ	0Ô	0ð *ð *Ø�˜2Ÿ:š: a™=œ=Ñ)Ô)ˆð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ ˜v rÑ*Ô*€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%s   ¥AÁAÁAznamespace, _device, _dtypec                 ó®  — t          | |¦  «        }g d¢g d¢g d¢g d¢g}|                     ||¬¦  «        }t          d¬¦  «        5  t          |¦  «        }d d d ¦  «         n# 1 swxY w Y   t	          ||¦  «        }t          j        |d¬	¦  «        }t          ||¦  «         t          |¦  «        r!t          j        |¦  «        j	        d
         sJ ‚d S d S )Nr    rŠ   )r~   r‡   r   )r,   é   r„   r3   Tr@   rt   ru   rv   )
r   r5   r   r   r   r4   Úravelr   r   ro   )Ú	namespaceÚ_deviceÚ_dtyperI   ÚarrayÚarray_xpr”   r’   s           r(   Ú
test_ravelrÓ   l  s,  € õ 
˜i¨Ñ	1Ô	1€BàˆYˆY˜	˜	˜	 9 9 9¨l¨l¨lÐ;€EØ�zŠz˜%¨ˆzÑ0Ô0€HÝ	¨4Ð	0Ñ	0Ô	0ð "ð "Ý˜Ñ!Ô!ˆð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "õ ˜v rÑ*Ô*€FÝŒ{˜5¨Ð,Ñ,Ô,€Hå�H˜fÑ%Ô%Ð%å˜2ÑÔð ;ÝŒ}˜VÑ$Ô$Ô*¨>Ô:Ð:Ð:Ð:ð;ð ;Ø:Ð:s   ÁA"Á"A&Á)A&)ÚcupyrÁ   úcupy.array_apic                 ón  — t          j        | ¦  «        }| dk    rL|j        j                             ¦   «         st          j        d¦  «         |                     g d¢d¬¦  «        }n|                     g d¢¦  «        }t          ||¬¦  «        }t          j        g d¢¦  «        }t          ||¦  «         dS )z0Check convert_to_numpy for GPU backed libraries.rÁ   ztest requires cudarÄ   r2   r3   ©rI   N)
r7   rC   Úbackendsr2   Úis_builtr™   r5   r   r4   r   )rÀ   rI   ÚX_gpuÚX_cpuÚexpected_outputs        r(   Útest_convert_to_numpy_gpurÝ   €  s´   € õ 
Ô	˜WÑ	%Ô	%€Bà�'ÒÐØŒ{Ô×(Ò(Ñ*Ô*ð 	.ÝŒKÐ,Ñ-Ô-Ð-Ø—
’
˜?˜?˜?°6�
Ñ:Ô:ˆˆà—
’
˜?˜?˜?Ñ+Ô+ˆå˜e¨Ð+Ñ+Ô+€EÝ”m O O OÑ4Ô4€OÝ�E˜?Ñ+Ô+Ð+Ð+Ð+r*   c                  óÎ   — t          j        d¦  «        } |                      g d¢d¬¦  «        }t          || ¬¦  «        }t	          j        g d¢¦  «        }t          ||¦  «         dS )z.Check convert_to_numpy for PyTorch CPU arrays.rÁ   rÄ   r.   r3   r×   N)r7   rC   r5   r   r4   r   )rÁ   ÚX_torchrÛ   rÜ   s       r(   Útest_convert_to_numpy_cpurà   ’  sf   € åÔ Ñ(Ô(€EØ�mŠm˜O˜O˜O°EˆmÑ:Ô:€Gå˜g¨%Ð0Ñ0Ô0€EÝ”m O O OÑ4Ô4€OÝ�E˜?Ñ+Ô+Ð+Ð+Ð+r*   c                   ó   — e Zd Zdd„ZdS )ÚSimpleEstimatorNc                 ó8   — || _         |j        d         | _        | S )Nr   )ÚX_ÚshapeÚn_features_)rS   r   Úys      r(   ÚfitzSimpleEstimator.fit�  s   € ØˆŒØœ7 1œ:ˆÔØˆr*   r«   )rR   rV   rW   rè   r´   r*   r(   râ   râ   œ  s(   € € € € € ðð ð ð ð ð r*   râ   zarray_namespace, converterrÁ   c                 óN   — |                       ¦   «                              ¦   «         S r«   )r.   r4   ©rÑ   s    r(   ú<lambda>rë   §  s   €  §	¢	¡¤× 1Ò 1Ñ 3Ô 3€ r*   c                 ó*   — t          j        | ¦  «        S r«   )r4   r5   rê   s    r(   rë   rë   ¨  s   € ­5¬=¸Ñ+?Ô+?€ r*   rÕ   c                 ó4   — | j                              ¦   «         S r«   )Ú_arrayÚgetrê   s    r(   rë   rë   ©  s   € ¨¬×)9Ò)9Ñ);Ô);€ r*   c                 ó  — t          j        | ¦  «        }|                     ddgg¦  «        }t          ¦   «                              |¦  «        }t          ||¦  «        }t          |j        t          j	        ¦  «        sJ ‚dS )z(Convert estimator attributes to ndarray.rƒ   ry   N)
r7   rC   r5   râ   rè   r   r%   rä   r4   Úndarray)rO   Ú	converterrI   r   ÚestÚnew_ests         r(   Ú!test_convert_estimator_to_ndarrayrõ   £  ss   € õ 
Ô	˜_Ñ	-Ô	-€Bà
�
Š
�S˜#�J�<Ñ Ô €AÝ
Ñ
Ô
×
Ò
 Ñ
"Ô
"€Cå.¨s°IÑ>Ô>€GÝ�g”j¥%¤-Ñ0Ô0Ð0Ð0Ð0Ð0Ð0r*   c                  óô   ‡— t          j        d¦  «        Št          j        ddgg¦  «        } t	          ¦   «                              | ¦  «        }t          |ˆfd„¦  «        }t          |j        d¦  «        sJ ‚dS )z0Convert estimator attributes to ArrayAPI arrays.rG   rƒ   ry   c                 ó.   •— ‰                      | ¦  «        S r«   )r5   )rÑ   rI   s    €r(   rë   z5test_convert_estimator_to_array_api.<locals>.<lambda>¿  s   ø€ À"Ç*Â*ÈUÑBSÔBS€ r*   Ú__array_namespace__N)	r7   rC   r4   r5   râ   rè   r   r˜   rä   )rD   ró   rô   rI   s      @r(   Ú#test_convert_estimator_to_array_apirù   ·  s|   ø€ õ 
Ô	Ð/Ñ	0Ô	0€BåŒ=˜3 ˜*˜Ñ&Ô&€DÝ
Ñ
Ô
×
Ò
 Ñ
%Ô
%€Cå.¨sÐ4SÐ4SÐ4SÐ4SÑTÔT€GÝ�7”:Ð4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5r*   c                  ó‚  — t          ¦   «         } |                      g d¢g d¢g¦  «        }|                      |dd¬¦  «        }|j        |u sJ ‚|                      |dd¬¦  «        }|j        |j        usJ ‚t	          j        t          d¬	¦  «        5  |                      |d
¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zDCheck reshape behavior with copy and is strict with non-tuple shape.r    r[   )rž   F)Úcopy)r€   r!   Tzshape must be a tupler0   rž   N)r   r5   ÚreshapeÚbaser7   r8   rH   )rI   r   Ú	X_no_copyÚX_copys       r(   Útest_reshape_behaviorr   Ã  s  € å	Ñ	Ô	€BØ
�
Š
�I�I�I˜y˜y˜yÐ)Ñ*Ô*€Aà—
’
˜1˜e¨%�
Ñ0Ô0€IØŒ>˜QÐÐÐÐà�ZŠZ˜˜6¨ˆZÑ-Ô-€FØŒ;˜aœfÐ$Ð$Ð$Ð$å	Œ•yÐ(?Ð	@Ñ	@Ô	@ð ð Ø
�
Š
�1�bÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB4Â4B8Â;B8Úwrapperc                 ór  — | t           k    r$t          j        d¦  «        }t          |¦  «        }nt          ¦   «         }|                     |j        |j        ¦  «        sJ ‚|                     |j        d¦  «        sJ ‚|                     |j        d¦  «        sJ ‚|                     |j        d¦  «        rJ ‚t          |¦  «        D ]}|                     |d¦  «        sJ ‚Œ|                     |j	        d¦  «        sJ ‚|                     |j        d¦  «        rJ ‚|                     |j
        d¦  «        sJ ‚|                     |j        d¦  «        rJ ‚|                     |j        d¦  «        sJ ‚|                     |j        d¦  «        rJ ‚|                     |j        d¦  «        sJ ‚|                     |j        d¦  «        sJ ‚|                     |j        d¦  «        sJ ‚|                     |j        d¦  «        rJ ‚| t          k    rW|                     |j        d¦  «        rJ ‚|                     |j        d¦  «        sJ ‚|                     |j        d¦  «        sJ ‚t          j        t$          d¬	¦  «        5  |                     |j
        d
¦  «        sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )zGTest isdtype implementation from _ArrayAPIWrapper and _NumPyAPIWrapper.rG   zreal floatingÚboolzsigned integerzunsigned integerÚnumericzcomplex floatingzUnrecognized data typer0   ÚunknownN)r   r7   rC   r   Úisdtyperb   r`   Úint32r   r  Úint16Úuint32Úuint16Úint64Úint8Ú	complex64Ú
complex128r8   r9   )r  rc   rI   r_   s       r(   Ú$test_get_namespace_array_api_isdtyper  Ò  sú  € ð Õ"Ò"Ð"ÝÔ!Ð"4Ñ5Ô5ˆÝ˜cÑ"Ô"ˆˆåÑÔˆà�:Š:�b”j "¤*Ñ-Ô-Ð-Ð-Ð-Ø�:Š:�b”j /Ñ2Ô2Ð2Ð2Ð2Ø�:Š:�b”j /Ñ2Ô2Ð2Ð2Ð2Ø�zŠz˜"œ( OÑ4Ô4Ð4Ð4Ð4å'¨Ñ+Ô+ð 2ð 2ˆØ�zŠz˜% Ñ1Ô1Ð1Ð1Ð1Ð1à�:Š:�b”g˜vÑ&Ô&Ð&Ð&Ð&Ø�zŠz˜"œ* fÑ-Ô-Ð-Ð-Ð-à�:Š:�b”hÐ 0Ñ1Ô1Ð1Ð1Ð1Ø�zŠz˜"œ)Ð%5Ñ6Ô6Ð6Ð6Ð6à�:Š:�b”iÐ!3Ñ4Ô4Ð4Ð4Ð4Ø�zŠz˜"œ(Ð$6Ñ7Ô7Ð7Ð7Ð7à�:Š:�b”h 	Ñ*Ô*Ð*Ð*Ð*Ø�:Š:�b”j )Ñ,Ô,Ð,Ð,Ð,Ø�:Š:�b”i Ñ+Ô+Ð+Ð+Ð+à�zŠz˜"œ*Ð&8Ñ9Ô9Ð9Ð9Ð9àÕ"Ò"Ð"Ø—:’:˜bœgÐ'9Ñ:Ô:Ð:Ð:Ð:Ø�zŠz˜"œ,Ð(:Ñ;Ô;Ð;Ð;Ð;Ø�zŠz˜"œ-Ð);Ñ<Ô<Ð<Ð<Ð<å	Œ•zÐ)AÐ	BÑ	BÔ	Bð /ð /Ø�zŠz˜"œ( IÑ.Ô.Ð.Ð.Ð.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /s   Ê J,Ê,J0Ê3J0c                 ó    — t          | |¦  «        }t          rt          |¦  «        |j        k    sJ ‚d S t          |¦  «        |j        k    sJ ‚d S r«   )r   r   r   r  r  )rÎ   rÏ   rÐ   rI   s       r(   Útest_indexing_dtyper  ü  s]   € õ 
˜i¨Ñ	1Ô	1€Båð .Ý˜bÑ!Ô! R¤XÒ-Ð-Ð-Ð-Ð-Ð-å˜bÑ!Ô! R¤XÒ-Ð-Ð-Ð-Ð-Ð-r*   c                  ó¼  — t          j        d¦  «        } t          j        d¦  «        }|                      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 ¦  «         d S # 1 swxY w Y   d S )	NrÁ   zarray_api_compat.torchr#   r.   r3   r   Tr@   )r7   rC   Úaranger4   r   r   r   r   )rÁ   Úxp_torchÚsome_torch_tensorÚsome_numpy_arrayrÎ   Úis_array_apir   s          r(   Útest_get_namespace_and_devicer    sS  € åÔ Ñ(Ô(€EÝÔ"Ð#;Ñ<Ô<€HØŸš Q¨u˜Ñ5Ô5ÐÝ”| A‘”Ðõ '?Ð?PÑ&QÔ&QÑ#€Iˆ|˜VØ�Ð&6Ñ7Ô7¸Ô:Ð:Ð:Ð:Ð:ØÐÐÐØˆ>ˆ>ˆ>õ 
¨4Ð	0Ñ	0Ô	0ð 2ð 2Ý*BÐCTÑ*UÔ*UÑ'ˆ	�< Ø˜HÐ$Ð$Ð$Ð$ØÐÐÐØÐ*Ô1Ò1Ð1Ð1Ð1Ð1ð	2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Â+CÃCÃ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 }	 | ||¦  «        ||	¬¦  «        }
|                     ||¬¦  «        }t          d¬¦  «        5  t          |||||	¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          t          ||¬¦  «        |
¦  «         t          t          d¦  «        k     st          t          d¦  «        k    r$t          |¦  «        t          |¦  «        k    sJ ‚d S d S )Nr   )Úcount_nonzero)r   r#   r   )r"   rž   r   )r   r   r   )r   r‡   r~   )r\   r   r]   r  )r!   r"   r"   r#   r!   r  )g      à?rz   r‚   gš™™™™™	@g333333@r^   )r‹   Úsample_weightr3   Tr@   )rI   r   r‹   r  r×   rB   rŽ   )Úsklearn.utils.sparsefuncsr  r   r4   rÑ   r5   r   r   r   r   r   r   r   )rO   r�   r‘   r  r‹   r  Úsparse_count_nonzerorI   rÑ   r  r’   rÒ   r”   s                r(   Útest_count_nonzeror"  !  sÚ  € ð PÐOÐOÐOÐOÐOå	˜o¨wÑ	7Ô	7€BÝŒK˜˜˜ J J J°	°	°	¸9¸9¸9ÀiÀiÀiÐPÑQÔQ€EØ˜UÒ"Ð"Ýœ o o oÑ6Ô6ˆˆØ	˜wÒ	&Ð	&ÝœÐ&?Ð&?Ð&?ÀzÐRÑRÔRˆˆàˆØ#Ð#Øˆ�eÑÔ 4°}ðñ ô €Hð �zŠz˜%¨ˆzÑ0Ô0€Hå	¨4Ð	0Ñ	0Ô	0ð 
ð 
ÝØ˜ G°$Àmð
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 Õ% f°Ð4Ñ4Ô4°hÑ?Ô?Ð?å•M 'Ñ*Ô*Ò*Ð*­j½MÈ'Ñ<RÔ<RÒ.RÐ.Rõ �hÑÔ¥6¨&¡>¤>Ò1Ð1Ð1Ð1Ð1Ð1ð /SÐ.Rs   Â6CÃCÃC)Gr¤   Ú	functoolsr   r4   r7   Ú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   Úsklearn.utils._testingr   r   Úsklearn.utils.fixesr   r   r   r   ÚmarkÚparametrizer5   r)   r=   rE   rK   rM   re   rr   rw   r•   r�   rH   r9   ÚZeroDivisionErrorr¢   r¦   r¿   ÚnanÚinfrÊ   rÓ   rÝ   rà   râ   rõ   rù   r   r  r  r  r"  r´   r*   r(   ú<module>r/     sH
  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð à €€€Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )à *Ð *Ð *Ð *Ð *Ð *Ø &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð(ð ð ð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tð „×Ò˜˜}˜uœ}¨Y¨Y¨YÑ7Ô7¸¸¸ÐCÑDÔDð&ð &ñ EÔDð&ð	(ð 	(ð 	(ð )ð4ð 4ñ )Ô(ð4ð" )ðGð Gñ )Ô(ðGðð ð ð ð Ð$4ñ ô ð ð+ð +ð +ð „×Ò˜ wÐ0BÐ&CÑDÔDð*ð *ñ EÔDð*ð.ð .ð .ð „×ÒØ*Ð,UÐ,UÑ,WÔ,Wñô ð „×ÒØ(ð 	 Ø	ˆq�$˜˜˜Ð(Ø	ˆq�$˜˜A˜ÐØ
�ˆ˜˜4   Ð+Ø	Ð	Ð	˜a ¨¨S zÐ2Ø
ˆsˆ�Q˜˜o˜o˜oÐ.Ø	ˆˆ˜!˜T D¨$ <Ð0Ø
ˆQˆ��D˜)˜)˜)Ð$Ø	ˆˆ�A�t˜d D˜\Ð*Ø
ˆ)ˆ)�Y�Y�YÐ	  D¨/¨/¨/Ð:Ø
ˆ)ˆ)�Y�Y�YÐ	  D¨1¨a¨&Ð1àØ	ˆq�%˜˜˜Ð#Ø	ˆq�%˜!˜R˜Ð!Ø
�ˆ˜˜5 ) ) )Ð,Ø	Ð	Ð	˜a ¨¨A¨Ð/Ø
ˆsˆ�Q˜˜˜˜Ð/Ø	ˆˆ˜!˜U S¨# JÐ/Ø
ˆQˆ��E˜;˜;˜;Ð'Ø	ˆˆ�A�u˜q "˜gÐ&Ø
ˆ)ˆ)�Y�Y�YÐ	  E¨;¨;¨;Ð7Ø
ˆ)ˆ)�Y�Y�YÐ	  E¨A¨r¨7Ð3ð1ñô ð:Gð Gñ;ô ñô ð@Gð, „×ÒØ)Ø-Ð-ÀuÐMÑMÔMñô ðð ñ	ô ðð* „×ÒØ)Ø-Ð-ÀtÐLÑLÔLñô ð „×ÒØ%ð Ø�ˆFØØ$ð		
ð Ø�ˆVˆHà˜Ð#Øð	
ð ØˆLˆLØØð		
ð 
ˆR�ˆGÐ&Ð(RÐSð)ñô ð27ð 7ñ3ô ñ	ô ð:7ðð ð ð $;ð $;ð $;ðT )Ø„×Ò˜Ð$JÐ$JÐ$JÑKÔKØ„×ÒØà
ˆQ�”	Ð	˜G QÐ'Ø
ˆR�%”)�Ð	˜g rÐ*Ø
Œ)�U”YÐ	 ¨%¬)Ð4àˆYˆY˜œ E¤I¨u¬yÐ9¸;¸;¸;ÐGØˆG�G !Ð$Ñ$Ô$ØˆOˆOð	
ð ˆYˆY˜œ E¤I¨u¬yÐ9¸;¸;¸;ÐGØˆG�G !Ð$Ñ$Ô$Ø�%”)˜SÐ!ð	
ð
 ˆQ�”	Ð	˜G QÐ'Ø
ˆQ�”	Ð	˜G QÐ'ØŒ9ˆ*�u”y�jÐ	! 7¨U¬Y¨JÐ7àˆYˆY˜œ E¤I¨u¬yÐ9¸;¸;¸;ÐGØˆG�G !Ð$Ñ$Ô$ØˆOˆOð	
ð ˆYˆY˜œ E¤I¨u¬yÐ9¸;¸;¸;ÐGØˆG�G !Ð$Ñ$Ô$Ø�%”)˜SÐ!ð	
ð-ñô ð>&ð &ñ?ô ñ LÔKñ )Ô(ðB&ð „×ÒØ Ð"KÐ"KÑ"MÔ"Mñô ð;ð ;ñô ð;ð" )Ø„×Ò˜Ð$GÐ$GÐ$GÑHÔHð,ð ,ñ IÔHñ )Ô(ð,ð ,ð ,ð ,ðð ð ð ð �mñ ô ð ð )Ø„×ÒØ à	Ð3Ð3Ð4Ø	Ð?Ð?Ð@Ø	Ð;Ð;Ð<ðñô ð1ð 1ñô ñ )Ô(ð1ð )ð6ð 6ñ )Ô(ð6ðð ð ð „×Ò˜Ð%5Ð7GÐ$HÑIÔIð&/ð &/ñ JÔIð&/ðR „×ÒØ Ð"KÐ"KÑ"MÔ"Mñô ð.ð .ñô ð.ð2ð 2ð 2ð2 „×ÒØ*Ð,UÐ,UÑ,WÔ,Wñô ð „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð!5Ð!5Ð!5Ñ6Ô6Ø„×ÒÐ-Ð/EÐ/EÐ/EÑFÔFð2ð 2ñ GÔFñ 7Ô6ñ :Ô9ñô ð2ð 2ð 2r*   