§
    rŠtj™  ã                   óR  — d dl Z d dlm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 d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d d	lm5Z6 d d
l7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@mAZA ejB         C                    d ejD        g d¢¦  «        g d¢dg¦  «        d„ ¦   «         ZEd„ ZFe<ejB         C                    d ejD        g d¢¦  «        g d¢dg¦  «        d„ ¦   «         ¦   «         ZGe<ejB         C                    dg d¢¦  «        d„ ¦   «         ¦   «         ZHe<d„ ¦   «         ZIe<d„ ¦   «         ZJejB         C                    dd„  e3¦   «         D ¦   «         ¦  «        d„ ¦   «         ZKd„ ZLejB         C                    dddg¦  «        d„ ¦   «         ZMejB         C                    d e4¦   «         ¦  «        ejB         C                    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 d0¢fg d1¢d#d!d2d3gfg d¢g d¢gd d!g d"¢fg d4¢g d5¢gd#d!d$d%gfd6dd d&g d7¢fdd#d&d8d9g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 d1¢d#d&d;d@gfg d¢g d¢gd d&g dA¢fg d4¢g d5¢gd#d&dBdCgfg¦  «        dD„ ¦   «         ¦   «         ZNejB         C                    d e4d&¬E¦  «        ¦  «        dF„ ¦   «         ZOejB         C                    d e4d!¬E¦  «        ¦  «        ejB         C                    dGdd#d$gePdHfd d#d$ggeQePfdIfd g dJ¢eQdIfd dKd#geRdLff¦  «        dM„ ¦   «         ¦   «         ZSdN„ ZTe<dO„ ¦   «         ZUe<ejB         C                    dPg dQ¢¦  «        ejB         C                    dRd#d$ejV        ge(d#fd#dSejV         ge(dSfejW        ejW        ge(ejW        fg d¢ejV        ejV        ejV        gg dT¢g ee(d ¬U¦  «        g dV¢fg d¢ejV        ejV        ejV        gg dT¢g ee(d#¬U¦  «        dWejV        dXgfd#d$ejV        ge&d$fd#d$ejV        ge&d$fejW         ejW         ge&ejW         fg d¢ejV        ejV        ejV        gg dT¢g ee&d ¬U¦  «        g dY¢fg d¢ejV        ejV        ejV        gg dT¢g ee&d#¬U¦  «        dZejV        d[gfd#d$ejV        ge'd(fd#dSejV         ge'd\fejW         ejW         ge'ejW         fg d¢ejV        ejV        ejV        gg dT¢g ee'd ¬U¦  «        g d"¢fg d¢ejV        ejV        ejV        gg dT¢g ee'd#¬U¦  «        d]ejV        d^gfg¦  «        d_„ ¦   «         ¦   «         ¦   «         ZXejB         C                    d` e4¦   «         ¦  «        da„ ¦   «         ZYe<ejB         C                    dPdbdcg¦  «        dd„ ¦   «         ¦   «         ZZde„ Z[ G df„ dge¦  «        Z\ G dh„ die¦  «        Z]e<ejB         C                    djdcdk„ fddl„ fdbdm„ fg¦  «        dn„ ¦   «         ¦   «         Z^e<do„ ¦   «         Z_e<dp„ ¦   «         Z`e<dq„ ¦   «         Zae<dr„ ¦   «         Zbe<ejB         C                    ddsd)gg ejc        dsd)gg¦  «        g¦  «        dt„ ¦   «         ¦   «         ZdejB         C                    d` e4¦   «         ¦  «        du„ ¦   «         ZeejB         C                    d` e4¦   «         ¦  «        dv„ ¦   «         ZfejB         C                    d e4¦   «         ¦  «        ejB         C                    dwd!d&g¦  «        ejB         C                    dxd!d&g¦  «        ejB         C                    dyg dz¢¦  «        ejB         C                    d{g d|¢¦  «        d}„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ZgejB         h                    e ji         j                    d~¦  «        dk    d€¬�¦  «        d‚„ ¦   «         ZkejB         C                    d e4¦   «         ¦  «        ejB         C                    dƒe?¦  «        ejB         C                    d„g d…¢¦  «        ejB         C                    d†g d‡¢¦  «        dˆ„ ¦   «         ¦   «         ¦   «         ¦   «         ZlejB         C                    d‰ ejm        g d¢¦  «        d#dŠf ejm        d#d$gd:d‹gg¦  «         ejm        g d¢¦  «        dŒf ejm        d#d$gd:d‹gg¦  «        g d¢dŒf ejm        d#d$gd:d‹gg¦  «         ejm        d#d$gd:d‹gg¦  «        d�fg¦  «        dŽ„ ¦   «         ZnejB         C                    d�d�d‘g¦  «        ejB         C                    d’d!d&g¦  «        d“„ ¦   «         ¦   «         ZoejB         C                    d”g d•¢¦  «        ejB         C                    d e4¦   «         ¦  «        d–„ ¦   «         ¦   «         ZpejB         C                    d e4¦   «         ¦  «        d—„ ¦   «         ZqejB         C                    dƒe?¦  «        ejB         C                    d˜d!d&g¦  «        d™„ ¦   «         ¦   «         ZrejB         C                    d` e4¦   «         ¦  «        ejB         C                    d„g dš¢¦  «        d›„ ¦   «         ¦   «         ZsejB         C                    d` e4¦   «         ¦  «        dœ„ ¦   «         ZtejB         C                    d e4¦   «         ¦  «        ejB         C                    d„g d�¢¦  «        dž„ ¦   «         ¦   «         ZuejB         C                    d„g d�¢¦  «        dŸ„ ¦   «         ZvejB         C                    d g d¡¢¦  «        d¢„ ¦   «         ZwejB         C                    d£d&d!g¦  «        ejB         C                    d` e4¦   «         ¦  «        d¤„ ¦   «         ¦   «         ZxejB         C                    d` e4¦   «         ¦  «        d¥„ ¦   «         ZydS )¦é    N)Úpartial)Úassert_allclose)ÚexpitÚlogit)Úconfig_context)ÚHalfMultinomialLoss)ÚBaseEstimator) Ú_add_to_diagonalÚ_asarray_with_orderÚ_atol_for_typeÚ_averageÚ_convert_to_numpyÚ_count_nonzeroÚ _estimator_with_converted_arraysÚ_expitÚ_fill_diagonalÚ_half_multinomial_lossÚ_is_numpy_namespaceÚ_isinÚ_logitÚ
_logsumexpÚ_matching_numpy_dtypeÚ_max_precision_float_dtypeÚ_medianÚ_nanmaxÚ_nanmeanÚ_nanminÚ_ravelÚ_validate_diagonal_argsÚcheck_same_namespaceÚget_namespaceÚget_namespace_and_deviceÚindexing_dtypeÚmove_estimator_toÚmove_toÚ	np_compatÚsupported_float_dtypesÚ(yield_mixed_namespace_input_permutationsÚ)yield_namespace_device_dtype_combinations©Údevice)ÚSkipTestÚ_array_api_for_testsÚ_convert_containerÚassert_array_equalÚ'skip_if_array_api_compat_not_configured)Ú	_IS_32BITÚCSR_CONTAINERSÚ
np_versionÚparse_versionÚX©é   é   é   c                 óH   — t          | ¦  «        \  }}|t          u sJ ‚|rJ ‚dS )z.Check that get_namespace returns NumPy wrapperN)r!   r&   ©r5   Úxp_outÚis_array_api_compliants      ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_array_api.pyÚ-test_get_namespace_ndarray_or_similar_defaultr?   =   s:   € õ &3°1Ñ%5Ô%5Ñ"€FÐ"Ø•YÐÐÐÐØ%Ð%Ð%Ð%Ð%Ð%ó    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.r6   é
   ç       @Úcpu)Ú
fill_valuer+   zUnsupported device©ÚmatchÚcudar*   N)	ÚnumpyÚasarrayr!   Úfullr   ÚpytestÚraisesÚ
ValueErrorÚzeros)r5   r<   Ú_Ú
full_arrays       r>   Ú*test_get_namespace_ndarray_creation_devicerR   E   sã   € åŒ�i�i�iÑ Ô €AÝ˜aÑ Ô �I€FˆAà—’˜R¨C¸�Ñ>Ô>€JÝ�J  ¨¡
Ñ+Ô+Ð+å	Œ•zÐ)=Ð	>Ñ	>Ô	>ð (ð (Ø�Š�R ˆÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   Á0BÂBÂBc                 óÔ   — t          d¬¦  «        5  t          | ¦  «        \  }}|t          | t          j        ¦  «        k    sJ ‚|t
          u sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )z%Test get_namespace on NumPy ndarrays.T©Úarray_api_dispatchN)r   r!   Ú
isinstancerI   Úndarrayr&   r;   s      r>   Ú;test_get_namespace_ndarray_or_similar_default_with_dispatchrX   Q   s¿   € õ
 
¨4Ð	0Ñ	0Ô	0ð #ð #Ý)6°qÑ)9Ô)9Ñ&ˆÐ&Ø%­°Aµu´}Ñ)EÔ)EÒEÐEÐEÐEð �Ð"Ð"Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   ‘>AÁA!Á$A!Úconstructor_name)ÚpyarrowÚpandasÚpolarsÚseriesc                 óÈ   — t          g d¢g d¢g| ¦  «        }t          d¬¦  «        5  t          |¦  «        \  }}|rJ ‚|t          u sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )z,Test get_namespace on dataframes and series.)r7   é   r8   )r9   r9   é   TrT   N)r.   r   r!   r&   )rY   Údfr<   r=   s       r>   Ú#test_get_namespace_df_with_dispatchrb   _   sË   € õ
 
˜Y˜Y˜Y¨	¨	¨	Ð2Ð4DÑ	EÔ	E€BÝ	¨4Ð	0Ñ	0Ô	0ð #ð #Ý)6°rÑ):Ô):Ñ&ˆÐ&Ø)Ð)Ð)Ð)ð �Ð"Ð"Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   §"AÁAÁAc                  óÆ   — t          d¬¦  «        5  t          t          j        g d¢g¦  «        ¦  «        \  } }|rJ ‚| t          u sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )z$Test get_namespace on sparse arrays.TrT   r6   N)r   r!   ÚspÚ	csr_arrayr&   )r<   r=   s     r>   Ú'test_get_namespace_sparse_with_dispatchrf   n   s¾   € õ 
¨4Ð	0Ñ	0Ô	0ð #ð #Ý)6µr´|ÀYÀYÀYÀKÑ7PÔ7PÑ)QÔ)QÑ&ˆÐ&Ø)Ð)Ð)Ð)ð �Ð"Ð"Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   ‘7AÁAÁA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|¦  «         t          j
                             d¦  «        d	k    sJ ‚t          j        t          d
¬¦  «        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_strictr6   TrT   Nc                 ó   — | dk    rdS d S )NÚSCIPY_ARRAY_APIÚ0© )Úkeys    r>   Úmock_getenvz1test_get_namespace_array_api.<locals>.mock_getenvˆ   s   € ØÐ'Ò'Ð'Ø�sð (Ð'r@   zos.environ.getrj   Ú1z#scipy's own support is not enabled.rF   )rL   ÚimportorskiprI   rJ   r   r!   rM   Ú	TypeErrorÚsetattrÚosÚenvironÚgetÚRuntimeError)ÚmonkeypatchÚxpÚX_npÚX_xpr<   r=   rn   s          r>   Útest_get_namespace_array_apir{   z   s$  € õ 
Ô	Ð/Ñ	0Ô	0€BåŒ=˜)˜)˜)˜Ñ%Ô%€DØ�:Š:�dÑÔ€DÝ	¨4Ð	0Ñ	0Ô	0ð  ð  Ý)6°tÑ)<Ô)<Ñ&ˆÐ&Ø%Ð%Ð%Ð%åŒ]�9Ñ%Ô%ð 	Gð 	GÝ-:¸4ÀÑ-FÔ-FÑ*ˆFÐ*ð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð	ð 	ð 	ð 	×ÒÐ,¨kÑ:Ô:Ð:ÝŒz�~Š~Ð/Ñ0Ô0°CÒ7Ð7Ð7Ð7ÝŒ]ÝØ7ð
ñ 
ô 
ð 	 ð 	 õ ˜$ÑÔÐð		 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  s[   Á0D9ÂB!ÂD9Â!B%	Â%D9Â(B%	Â)AD9ÄD!ÄD9Ä!D%	Ä%D9Ä(D%	Ä)D9Ä9D=Å D=zarray_input, referencec                 óL   — g | ]!}t          j        |d d…         d|d         iŽ‘Œ"S )Nr8   Úid)rL   Úparam)Ú.0Úargss     r>   ú
<listcomp>r�   —   sC   € ð ð ð àõ 	Œ�d˜2˜A˜2”hÐ+ 4¨¤7Ð+Ð+ðð ð r@   c                 óÐ  — t          |j        |j        ¬¦  «        \  }}t          | j        | j        ¬¦  «        \  }}t          d¬¦  «        5  |                     g d¢|¬¦  «        }t          |                     d|¬¦  «        ¦  «        }t          |||¬¦  «        }t          |¦  «        d         |k    sJ ‚t          |¦  «        |k    sJ ‚	 d	d	d	¦  «         d	S # 1 swxY w Y   d	S )
z8Check conversion between various namespace-device-pairs.©Údevice_nameTrT   r6   r*   r7   ©rx   r+   r   N)r-   rx   r+   r   rJ   Úarray_api_devicer%   r!   )	Úarray_inputÚ	referenceÚxp_toÚ	device_toÚxp_fromÚdevice_fromÚarray_inÚdevice_referenceÚ	array_outs	            r>   Ú"test_move_to_array_api_conversionsr�   •   sA  € õ ,¨I¬LÀiÔFVÐWÑWÔWÑ€Eˆ9Ý/ØŒ KÔ$6ðñ ô Ñ€Gˆ[õ 
¨4Ð	0Ñ	0Ô	0ð ?ð ?Ø—?’? 9 9 9°[�?ÑAÔAˆÝ+¨E¯MªM¸!ÀI¨MÑ,NÔ,NÑOÔOÐÝ˜H¨Ð7GÐHÑHÔHˆ	Ý˜YÑ'Ô'¨Ô*¨eÒ3Ð3Ð3Ð3Ý 	Ñ*Ô*Ð.>Ò>Ð>Ð>Ð>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s   ÁB CÃCÃ"Cc                  ó`  — t          dd¬¦  «        \  } }t          dd¬¦  «        \  }}t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          d¬	¦  «        5  |}t          |d| d¬
¦  «        \  }}||u sJ ‚|�J ‚d}	t          j        t          |	¬¦  «        5  t          ||||¬
¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          |	¬¦  «        5  t          |d||¬
¦  «         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*Check sparse inputs are handled correctly.rI   Nrƒ   ÚtorchrD   )r   r7   r8   r9   r6   TrT   r…   z6Sparse arrays are only accepted \(and passed through\)rF   )
r-   rd   re   rI   Úarrayr   r%   rL   rM   rq   )
Úxp_numpyrP   Úxp_torchr+   Úsparse1Únumpy_arrayÚ
device_cpuÚresult1Úresult2Úmsgs
             r>   Útest_move_to_sparserœ   «   sF  € å& w¸DÐAÑAÔA�K€HˆaÝ+¨GÀÐGÑGÔGÑ€HˆfåŒl˜<˜<˜<Ñ(Ô(€GÝ”+˜i˜i˜iÑ(Ô(€Kå	¨4Ð	0Ñ	0Ô	0ð Cð CØˆ
õ # 7¨D°XÀdÐKÑKÔKÑˆ�Ø˜'Ð!Ð!Ð!Ð!Øˆˆˆð HˆÝŒ]�9¨CÐ0Ñ0Ô0ð 	Jð 	JÝ�G˜[¨X¸jÐIÑIÔIÐIð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	JåŒ]�9¨CÐ0Ñ0Ô0ð 	Cð 	CÝ�G˜T h°zÐBÑBÔBÐBð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	CðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cs[   Á%A D#Â%CÂ9D#ÃC		Ã	D#ÃC		ÃD#Ã+DÃ?D#ÄD	ÄD#ÄD	ÄD#Ä#D'Ä*D'Ú	array_apirI   rh   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.)g333333ó?g333333@gffffff@ÚF)Úorderrx   ÚF_CONTIGUOUSN)rL   rp   rJ   r   rI   Úflags)r�   rx   r5   ÚX_newÚX_new_nps        r>   Útest_asarray_with_orderr¥   Ã   se   € õ 
Ô	˜YÑ	'Ô	'€Bà
�
Š
�?�?�?Ñ#Ô#€AÝ ¨°Ð4Ñ4Ô4€EåŒ}˜UÑ#Ô#€HØŒ>˜.Ô)Ð)Ð)Ð)Ð)Ð)r@   z(array_namespace, device_name, dtype_namez"weights, axis, normalize, expected)NNTç      @T)g      @r¦   ç      @r7   r8   é   F)TTFç      ø?r§   çš™™™™™Ù?gš™™™™™¹?)gš™™™™™ù?gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@)rª   çš™™™™™É?r«   g      ü?g      @)r9   r_   r¨   )r7   r7   r8   g      @g      @)r7   r8   r7   )r8   r8   r8   )NNFé   )r¨   é   é	   r`   é   r9   r®   )çš™™™™™é?çÍÌÌÌÌÌô?gÍÌÌÌÌÌü?gffffffö?gffffff@)r®   é   r¯   r¬   )r¨   é   é   é   é   c                 óx  — t          | ||¦  «        \  }}t          j        g d¢g d¢g|¬¦  «        }	|                     |	|¬¦  «        }	|�-t          j        ||¬¦  «        }|                     ||¬¦  «        }t          d¬¦  «        5  t	          |	|||¬¦  «        }
t
          t          d¦  «        k     st
          t          d	¦  «        k    r"t          |	¦  «        t          |
¦  «        k    sJ ‚d d d ¦  «         n# 1 swxY w Y   t          |
t          d
¬¦  «        }
t          |
|t          |¦  «        ¬¦  «         d S )Nr6   ©r_   r¨   r`   ©Údtyper*   TrT   )ÚaxisÚweightsÚ	normalizeú2.0.0ú2.1.0rD   r…   )Úatol)r-   rI   rJ   r   r   r3   r4   r†   r%   r   r   )Úarray_namespacer„   Ú
dtype_namer¼   r»   r½   Úexpectedrx   r+   r�   Úresults              r>   Útest_averagerÅ   Ï   sŽ  € õH & o°{ÀJÑOÔO�J€BˆÝŒ}˜i˜i˜i¨¨¨Ð3¸:ÐFÑFÔF€HØ�zŠz˜(¨6ˆzÑ2Ô2€HØÐÝ”- ¨zÐ:Ñ:Ô:ˆØ—*’*˜W¨V�*Ñ4Ô4ˆå	¨4Ð	0Ñ	0Ô	0ð Jð JÝ˜(¨°wÈ)ÐTÑTÔTˆå� gÑ.Ô.Ò.Ð.µ*ÅÈgÑ@VÔ@VÒ2VÐ2Võ $ HÑ-Ô-Õ1AÀ&Ñ1IÔ1IÒIÐIÐIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jõ �V¥¨eÐ4Ñ4Ô4€FÝ�F˜H­>¸*Ñ+EÔ+EÐFÑFÔFÐFÐFÐFs   ÂA&C9Ã9C=Ä C=)Ú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 )Nr8   r   r¹   y              ð?r_   r9   z does not support r*   z;Complex floating point values are not supported by average.TrT   rF   )r-   rI   rJ   rº   ÚnameÚhasattrrL   Úskipr   rM   ÚNotImplementedErrorr   )rÁ   r„   rÂ   rx   r+   r�   Úcomplex_type_nameÚerr_msgs           r>   Ú$test_average_raises_with_wrong_dtyperÎ     s£  € õ
 & o°{ÀJÑOÔO�J€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   Â'C7ÃCÃC7ÃC#	Ã#C7Ã&C#	Ã'C7Ã7C;Ã>C;zaxis, weights, error, error_msgzAxis must be specifiedr¼   )r7   r8   r9   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 )	Nr6   r¸   r¹   r*   TrT   rF   )r»   r¼   )r-   rI   rJ   r   rL   rM   r   )
rÁ   r„   rÂ   r»   r¼   ÚerrorÚ	error_msgrx   r+   r�   s
             r>   Ú+test_average_raises_with_invalid_parametersrÓ     sl  € õ@ & o°{ÀJÑOÔO�J€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ÂB;Â/CÂ;B?	Â?CÃB?	ÃCÃCÃCc                  óJ   — t          ¦   «         �J ‚t          d d¦  «        �J ‚d S )NrÈ   )r†   rl   r@   r>   Útest_device_none_if_no_inputrÕ   K  s0   € ÝÑÔÐ%Ð%Ð%å˜D &Ñ)Ô)Ð1Ð1Ð1Ð1Ð1r@   c                  óô  ‡—  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   t           | d¦  «         | d¦  «        ¦  «        �J ‚d}t          d	¬
¦  «        5  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 d d ¦  «         d S # 1 swxY w Y   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©rÈ   )ÚselfrÈ   s     r>   Ú__init__z/test_device_inspection.<locals>.Device.__init__T  s   € ØˆDŒIˆIˆIr@   c                 ó"   — | j         |j         k    S rÚ   rÛ   )rÜ   r+   s     r>   Ú__eq__z-test_device_inspection.<locals>.Device.__eq__W  s   € Ø”9 ¤Ò+Ð+r@   c                 ó    — t          d¦  «        ‚)NzDevice object is not hashable)rq   ©rÜ   s    r>   Ú__hash__z/test_device_inspection.<locals>.Device.__hash__Z  s   € ÝÐ;Ñ<Ô<Ð<r@   c                 ó   — | j         S rÚ   rÛ   rá   s    r>   Ú__str__z.test_device_inspection.<locals>.Device.__str__]  s
   € Ø”9Ðr@   N)Ú__name__Ú
__module__Ú__qualname__rÝ   rß   râ   rä   rl   r@   r>   ÚDevicerØ   S  sP   € € € € € ð	ð 	ð 	ð	,ð 	,ð 	,ð	=ð 	=ð 	=ð	ð 	ð 	ð 	ð 	r@   rè   c                   ó   •— e Zd Zˆ fd„ZdS )ú%test_device_inspection.<locals>.Arrayc                 ó(   •—  ‰|¦  «        | _         d S rÚ   r*   )rÜ   r„   rè   s     €r>   rÝ   z.test_device_inspection.<locals>.Array.__init__a  s   ø€ Ø ˜& Ñ-Ô-ˆDŒKˆKˆKr@   N)rå   ræ   rç   rÝ   )rè   s   €r>   ÚArrayrê   `  s.   ø€ € € € € ð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.r@   rì   r+   rD   Úmygpuz.Input arrays use different devices: cpu, mygpuTrT   rF   )rL   rM   rq   Úhashr+   r†   r   rN   )rì   rÍ   Úarray1Úarray2rè   s       @r>   Útest_device_inspectionrñ   Q  s˜  ø€ ðð ð ð ð ñ ô ð ð.ð .ð .ð .ð .ð .ð .ñ .ô .ð .õ 
Œ•yÑ	!Ô	!ð %ð %ÝˆUˆU�8‰_Œ_Ô#Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %õ ˜E˜E %™LœL¨%¨%°©.¬.Ñ9Ô9ÐAÐAÐAð ?€GÝ	¨4Ð	0Ñ	0Ô	0ð 
Ið 
IÝŒ]�:¨WÐ5Ñ5Ô5ð 	;ð 	;Ý˜U˜U 5™\œ\¨5¨5°©>¬>Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð ��x‘”ˆØ��x‘”ˆàŒ}Õ 0°Ñ 8Ô 8Ò8Ð8Ð8Ð8ØŒ}Õ 0°¸Ñ @Ô @Ò@Ð@Ð@Ð@ØŒ}Õ 0°¸ÀÑ HÔ HÒHÐHÐHÐHÐHð
Ið 
Ið 
Iñ 
Iô 
Ið 
Ið 
Ið 
Ið 
Ið 
Ið 
Ið 
Iøøøð 
Ið 
Ið 
Ið 
Ið 
Ið 
IsH   ·A!Á!A%Á(A%Â"E-Â>#C-Ã!E-Ã-C1	Ã1E-Ã4C1	Ã5A*E-Å-E1Å4E1Úlibrary)rI   rh   r’   zX,reduction,expectedéþÿÿÿ)r_   r¨   ç      @©r»   ©ç      ð?rC   ç      @r÷   ç      @)rù   ç      @rô   rø   rô   g      à¿rC   rú   c                 ó  — t          j        | ¦  «        }t          d¬¦  «        5   ||                     |¦  «        ¦  «        }ddd¦  «         n# 1 swxY w Y   t	          |t
          d¬¦  «        }t          ||¦  «         dS )z-Check NaN reductions like _nanmin and _nanmaxTrT   NrD   r…   )rL   rp   r   rJ   r%   rI   r   )rò   r5   Ú	reductionrÃ   rx   rÄ   s         r>   Útest_nan_reductionsrý   „  sÀ   € õ` 
Ô	˜WÑ	%Ô	%€Bå	¨4Ð	0Ñ	0Ô	0ð *ð *Ø�˜2Ÿ:š: a™=œ=Ñ)Ô)ˆð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ �V¥¨eÐ4Ñ4Ô4€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%s   ¥AÁAÁAz"namespace, device_name, dtype_namec                 óÄ  — 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
          d¬	¦  «        }t          j        |d
¬¦  «        }t          ||¦  «         t          |¦  «        r!t          j        |¦  «        j	        d         sJ ‚d S d S )Nr6   r¸   )r­   rµ   r®   )rB   é   r²   r*   TrT   rD   r…   ÚC)r    ÚC_CONTIGUOUS)
r-   rJ   r   r   r%   rI   Úravelr   r   r¢   )	Ú	namespacer„   rÂ   rx   r+   r“   Úarray_xprÄ   rÃ   s	            r>   Ú
test_ravelr  ½  s7  € õ
 & i°¸jÑIÔI�J€BˆàˆYˆY˜	˜	˜	 9 9 9¨l¨l¨lÐ;€EØ�zŠz˜%¨ˆzÑ/Ô/€HÝ	¨4Ð	0Ñ	0Ô	0ð "ð "Ý˜Ñ!Ô!ˆð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "õ �V¥¨eÐ4Ñ4Ô4€FÝŒ{˜5¨Ð,Ñ,Ô,€Hå�H˜fÑ%Ô%Ð%å˜2ÑÔð ;ÝŒ}˜VÑ$Ô$Ô*¨>Ô:Ð:Ð:Ð:ð;ð ;Ø:Ð:s   Á
A&Á&A*Á-A*Úcupyr’   c                 ó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ö   rH   r*   ©rx   N)
rL   rp   ÚbackendsrH   Úis_builtrÊ   rJ   r   rI   r   )rò   rx   Ú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ö   rD   r*   r  N)rL   rp   rJ   r   rI   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„ Zd„ ZdS )ÚSimpleEstimatorNc                 óZ   — || _         d|i| _        |g| _        |j        d         | _        | S ©Nr5   r   )ÚX_ÚX_dict_ÚX_list_ÚshapeÚn_features_©rÜ   r5   Úys      r>   ÚfitzSimpleEstimator.fitï  s0   € ØˆŒØ˜Q�xˆŒØ�sˆŒØœ7 1œ:ˆÔØˆr@   c                 ó,   — t          || dd¬¦  «         |S ©Nr  Úpredict)Ú	attributeÚmethod©r    ©rÜ   r5   s     r>   r   zSimpleEstimator.predictö  ó   € Ý˜Q °¸YÐGÑGÔGÐGØˆr@   c                 óB   — t          j        | j        ¦  «        | _        d S rÚ   )rd   Ú
csr_matrixr  rá   s    r>   ÚsparsifyzSimpleEstimator.sparsifyú  s   € Ý”- ¤Ñ(Ô(ˆŒˆˆr@   rÚ   )rå   ræ   rç   r  r   r(  rl   r@   r>   r  r  î  sF   € € € € € ðð ð ð ðð ð ð)ð )ð )ð )ð )r@   r  c                   ó"   — e Zd Zdd„Zd„ Zd„ ZdS )ÚSimpleEstimatorCustomLogicNc                 óJ   — || _         d|i| _        |j        d         | _        | S r  )r  r  r  r  r  s      r>   r  zSimpleEstimatorCustomLogic.fitÿ  s'   € ØˆŒØ˜Q�xˆŒØœ7 1œ:ˆÔØˆr@   c                 ó,   — t          || dd¬¦  «         |S r  r#  r$  s     r>   r   z"SimpleEstimatorCustomLogic.predict  r%  r@   c                 ó”   ‡—  ‰| j         ¦  «        | _         ˆfd„| j                             ¦   «         D ¦   «         | _        d| _        | S )Nc                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS rl   rl   )r   ÚkÚvÚ	converters      €r>   ú
<dictcomp>zLSimpleEstimatorCustomLogic.__sklearn_array_api_convert__.<locals>.<dictcomp>  s'   ø€ ÐIÐIÐI©D¨A¨q˜˜9˜9 Q™<œ<ÐIÐIÐIr@   T)r  r  ÚitemsÚ
converted_)rÜ   r1  s    `r>   Ú__sklearn_array_api_convert__z8SimpleEstimatorCustomLogic.__sklearn_array_api_convert__	  sM   ø€ Ø�)˜DœGÑ$Ô$ˆŒØIÐIÐIÐI°D´L×4FÒ4FÑ4HÔ4HÐIÑIÔIˆŒð ˆŒØˆr@   rÚ   )rå   ræ   rç   r  r   r5  rl   r@   r>   r*  r*  þ  sF   € € € € € ðð ð ð ðð ð ðð ð ð ð r@   r*  zarray_namespace, converterc                 óN   — |                       ¦   «                              ¦   «         S rÚ   )rD   rI   ©r“   s    r>   ú<lambda>r8    s   €  §	¢	¡¤× 1Ò 1Ñ 3Ô 3€ r@   c                 ó*   — t          j        | ¦  «        S rÚ   )rI   rJ   r7  s    r>   r8  r8    s   € ­5¬=¸Ñ+?Ô+?€ r@   c                 ó*   — |                       ¦   «         S rÚ   )ru   r7  s    r>   r8  r8    s   € ˜uŸyšy™{œ{€ r@   c                 óð  — t          j        | ¦  «        }|                     ddgg¦  «        }t          d¬¦  «        5  t	          ¦   «                              |¦  «        }|                     |¦  «         t          ||¦  «        }t          |j	        t          j        ¦  «        sJ ‚t          |t          d¬¦  «        }t          |j	        t          j        ¦  «        sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )z(Convert estimator attributes to ndarray.r±   r§   TrT   rD   r*   N)rL   rp   rJ   r   r  r  r   r   rV   r  rI   rW   r$   )rÁ   r1  rx   r5   ÚestÚnew_ests         r>   Ú!test_convert_estimator_to_ndarrayr>    s"  € õ 
Ô	˜_Ñ	-Ô	-€Bà
�
Š
�S˜#�J�<Ñ Ô €AÝ	¨4Ð	0Ñ	0Ô	0ð 5ð 5ÝÑÔ×#Ò# AÑ&Ô&ˆØ�Š�A‰Œˆå2°3¸	ÑBÔBˆÝ˜'œ*¥e¤mÑ4Ô4Ð4Ð4Ð4Ý# C­°uÐ=Ñ=Ô=ˆÝ˜'œ*¥e¤mÑ4Ô4Ð4Ð4Ð4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   ½B C+Ã+C/Ã2C/c                  óD  ‡— t          j        d¦  «        Št          j        ddgg¦  «        } t	          ¦   «                              | ¦  «        }t          |ˆfd„¦  «        }t          |j        d¦  «        sJ ‚t          d¬¦  «        5  t          |‰d ¬¦  «        }t          |j        ¦  «        d	         ‰k    sJ ‚t          |j        d
         ¦  «        d	         ‰k    sJ ‚t          |j        d	         ¦  «        d	         ‰k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nrh   r±   r§   c                 ó.   •— ‰                      | ¦  «        S rÚ   )rJ   )r“   rx   s    €r>   r8  z:test_convert_estimator_with_custom_logic.<locals>.<lambda>1  s   ø€ À"Ç*Â*ÈUÑBSÔBS€ r@   Ú__array_namespace__TrT   r*   r   r5   )rL   rp   rI   rJ   r  r  r   rÉ   r  r   r$   r!   r  r  )ry   r<  r=  rx   s      @r>   Ú(test_convert_estimator_with_custom_logicrB  *  sj  ø€ å	Ô	Ð/Ñ	0Ô	0€BåŒ=˜3 ˜*˜Ñ&Ô&€DÝ
Ñ
Ô
×
Ò
 Ñ
%Ô
%€Cå.¨sÐ4SÐ4SÐ4SÐ4SÑTÔT€GÝ�7”:Ð4Ñ5Ô5Ð5Ð5Ð5Ý	¨4Ð	0Ñ	0Ô	0ð :ð :Ý# C¨°DÐ9Ñ9Ô9ˆå˜WœZÑ(Ô(¨Ô+¨rÒ1Ð1Ð1Ð1Ý˜Wœ_¨SÔ1Ñ2Ô2°1Ô5¸Ò;Ð;Ð;Ð;Ý˜Wœ_¨QÔ/Ñ0Ô0°Ô3°rÒ9Ð9Ð9Ð9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :s   ÂA?DÄDÄDc                  ó
  — t          j        d¦  «        } t          j        ddgg¦  «        }t	          ¦   «                              |¦  «        }t          d¬¦  «        5  t          || d ¬¦  «        }|                     |                      ddgg¦  «        ¦  «         t          |j
        ¦  «        d         | k    sJ ‚t          |j        d         ¦  «        d         | k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S ©	Nrh   r±   r§   TrT   r*   r   r5   )rL   rp   rI   rJ   r*  r  r   r$   r   r!   r  r  r4  ©rx   ry   r<  r=  s       r>   Ú4test_custom_conversion_estimator_to_array_api_strictrF  ;  sE  € å	Ô	Ð/Ñ	0Ô	0€BåŒ=˜3 ˜*˜Ñ&Ô&€DÝ
$Ñ
&Ô
&×
*Ò
*¨4Ñ
0Ô
0€Cå	¨4Ð	0Ñ	0Ô	0ð "ð "Ý# C¨°DÐ9Ñ9Ô9ˆà�Š˜Ÿ
š
 S¨# J <Ñ0Ô0Ñ1Ô1Ð1å˜WœZÑ(Ô(¨Ô+¨rÒ1Ð1Ð1Ð1Ý˜Wœ_¨SÔ1Ñ2Ô2°1Ô5¸Ò;Ð;Ð;Ð;ØÔ!Ð!Ð!Ð!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   ÁBC8Ã8C<Ã?C<c                  ó¢  — t          j        d¦  «        } t          j        ddgg¦  «        }t	          ¦   «                              |¦  «        }t          d¬¦  «        5  t          || d ¬¦  «        }t          |j	        ¦  «        d         | k    sJ ‚t          |j
        d         ¦  «        d         | k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S rD  )rL   rp   rI   rJ   r  r  r   r$   r!   r  r  rE  s       r>   Ú*test_convert_estimator_to_array_api_strictrH  L  s  € å	Ô	Ð/Ñ	0Ô	0€BåŒ=˜3 ˜*˜Ñ&Ô&€DÝ
Ñ
Ô
×
Ò
 Ñ
%Ô
%€Cå	¨4Ð	0Ñ	0Ô	0ð <ð <Ý# C¨°DÐ9Ñ9Ô9ˆå˜WœZÑ(Ô(¨Ô+¨rÒ1Ð1Ð1Ð1Ý˜Wœ_¨SÔ1Ñ2Ô2°1Ô5¸Ò;Ð;Ð;Ð;Ð;ð	<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   ÁACÃCÃCc                  ó¤  — t          j        d¦  «        } t          d¬¦  «        5  t          ¦   «                              |                      ddgg¦  «        ¦  «        }t          j        t          d¬¦  «        5  |                     t          j        dg¦  «        ¦  «         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 )	Nrh   TrT   r±   r§   z.*must use the same namespacerF   r   )
rL   rp   r   r  r  rJ   rM   rN   r   rI   )rx   r<  s     r>   Útest_check_fitted_attributerJ  Z  s<  € å	Ô	Ð/Ñ	0Ô	0€Bå	¨4Ð	0Ñ	0Ô	0ð ,ð ,ÝÑÔ×#Ò# B§J¢J°°c°
¨|Ñ$<Ô$<Ñ=Ô=ˆåŒ]�:Ð-LÐMÑMÔMð 	,ð 	,Ø�KŠK�œ q cÑ*Ô*Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s6   ¥ACÁ8)B-Â!CÂ-B1	Â1CÂ4B1	Â5CÃC	ÃC	r±   c                 óº  — t          j        d¦  «        }t          d¬¦  «        5  t          ¦   «                              t          j        ddgg¦  «        ¦  «        }|                     | ¦  «         |                     ¦   «          |                     | ¦  «         |                     t          j        ddgg¦  «        ¦  «         t          ¦   «                              |                     ddgg¦  «        ¦  «        }t          j	        t          d¬¦  «        5  |                     | ¦  «         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ÐCheck validation of non-array input against fitted attribute ``X_``.

    ``SimpleEstimator.predict`` calls ``check_same_namespace`` with
    ``attribute="X_"`` to compare the input with the fitted data.
    rh   TrT   r±   r§   zArray namespace.*not compatiblerF   N)rL   rp   r   r  r  rI   rJ   r   r(  rM   rN   )r5   rx   r<  s      r>   Ú0test_check_fitted_attribute_with_non_array_inputrL  e  s¥  € õ 
Ô	Ð/Ñ	0Ô	0€Bå	¨4Ð	0Ñ	0Ô	0ð ð ÝÑÔ×#Ò#¥E¤M°C¸°:°,Ñ$?Ô$?Ñ@Ô@ˆà�Š�A‰Œˆà�Š‰Œˆà�Š�A‰ŒˆØ�Š•E”M C¨ : ,Ñ/Ô/Ñ0Ô0Ð0åÑÔ×#Ò# B§J¢J°°c°
¨|Ñ$<Ô$<Ñ=Ô=ˆÝŒ]�:Ð-NÐOÑOÔOð 	ð 	Ø�KŠK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   ¥C1EÄD8Ä,EÄ8D<	Ä<EÄ?D<	Å EÅEÅEc                 ó¨   — t          | ||¦  «        \  }}t          rt          |¦  «        |j        k    sJ ‚d S t          |¦  «        |j        k    sJ ‚d S rÚ   )r-   r1   r#   Úint32Úint64)r  r„   rÂ   rx   r+   s        r>   Útest_indexing_dtyperP  ~  sc   € õ
 & i°¸jÑIÔI�J€Bˆåð .Ý˜bÑ!Ô! R¤XÒ-Ð-Ð-Ð-Ð-Ð-å˜bÑ!Ô! R¤XÒ-Ð-Ð-Ð-Ð-Ð-r@   c                 óÔ   — t          | |¦  «        \  }}	 |                     dg|j        |¬¦  «         |j        }n# t          $ r
 |j        }Y nw xY wt          ||¦  «        |k    sJ ‚d S )Nç        )rº   r+   )r-   rJ   Úfloat64Ú	ExceptionÚfloat32r   )r  r„   rÂ   rx   r+   Úexpected_dtypes         r>   Útest_max_precision_float_dtyperW  ‹  sŒ   € õ
 & i°Ñ=Ô=�J€Bˆð$Ø
�
Š
�C�5 ¤
°6ˆ
Ñ:Ô:Ð:ØœˆˆøÝð $ð $ð $ð œˆˆˆð$øøøõ
 & b¨&Ñ1Ô1°^ÒCÐCÐCÐCÐCÐCs   •%; »AÁAÚinvertÚassume_uniqueÚelement_size)r`   rB   r³   Ú	int_dtype)Úint16rN  rO  Úuint8c                 óT  — t          | ||¦  «        \  }}|dz  }	dt          j        |¦  «                             |	df¦  «                             |¦  «        z  }
t          j        t          j        d¦  «        |¬¦  «        }|                     |
|¬¦  «        }|                     ||¬¦  «        }t          j        |
|||¬¦  «        }t          d¬¦  «        5  t          |||||¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          t          |t          d	¬
¦  «        |¦  «         d S )Nr8   r³   r¹   r*   )ÚelementÚtest_elementsrY  rX  TrT   )r_  r`  rx   rY  rX  rD   r…   )r-   rI   ÚarangeÚreshapeÚastyper“   rJ   Úisinr   r   r/   r%   )rÁ   r„   rÂ   rX  rY  rZ  r[  rx   r+   Úrr_  r`  Ú
element_xpÚtest_elements_xprÃ   rÄ   s                   r>   Ú	test_isinrh  œ  st  € õ" & o°{ÀJÑOÔO�J€BˆØ˜Ñ€AØ•%”,˜|Ñ,Ô,×4Ò4°a¸°VÑ<Ô<×CÒCÀIÑNÔNÑN€GÝ”K¥¤¨RÑ 0Ô 0¸	ÐBÑBÔB€MØ—’˜G¨F�Ñ3Ô3€JØ—z’z -¸�zÑ?Ô?ÐÝŒzØØ#Ø#Øð	ñ ô €Hõ 
¨4Ð	0Ñ	0Ô	0ð 
ð 
ÝØØ*ØØ'Øð
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ •w˜v­%¸Ð>Ñ>Ô>ÀÑIÔIÐIÐIÐIs   ÃC8Ã8C<Ã?C<rj   ro   zSCIPY_ARRAY_API not set to 1.)Úreasonc                  ó   — t          j        d¦  «        } ddlm} |                      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’   r   )r’   r9   rD   r*   TrT   )
rL   rp   Ú"sklearn.externals.array_api_compatr’   ra  rI   r"   r!   r   r+   )r’   Útorch_compatÚsome_torch_tensorÚsome_numpy_arrayr  Úis_array_apir+   s          r>   Útest_get_namespace_and_devicerp  Å  sU  € õ
 Ô Ñ(Ô(€EàHÐHÐHÐHÐHÐHàŸš Q¨u˜Ñ5Ô5ÐÝ”| A‘”Ðõ '?Ð?PÑ&QÔ&QÑ#€Iˆ|˜VØ�Ð&6Ñ7Ô7¸Ô:Ð:Ð:Ð:Ð:ØÐÐÐØˆ>ˆ>ˆ>õ 
¨4Ð	0Ñ	0Ô	0ð 2ð 2Ý*BÐCTÑ*UÔ*UÑ'ˆ	�< Ø˜LÐ(Ð(Ð(Ð(ØÐÐˆ|ØÐ*Ô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   r7   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          d¬¦  «        |¦  «         t          t          d¦  «        k     st          t          d¦  «        k    r$t          |¦  «        t          |¦  «        k    sJ ‚d S d S )Nr   )Úcount_nonzero)r   r9   r   )r8   rÏ   r   )r   r   r   )r®   rµ   r­   ©r_   r   r¨   rs  )r7   r8   r8   r9   r7   rt  )g      à?r©   r°   gš™™™™™	@g333333@r¹   )r»   Úsample_weightr*   TrT   )r»   rx  rx   r+   rD   r…   r¾   r¿   )Úsklearn.utils.sparsefuncsrv  r-   rI   r“   rJ   r   r   r   r%   r3   r4   r†   )rÁ   r„   rÂ   rq  r»   rr  Úsparse_count_nonzerorx   r+   r“   rx  rÃ   r  rÄ   s                 r>   Útest_count_nonzeror{  ã  sä  € ð PÐOÐOÐOÐOÐOå% o°{ÀJÑOÔO�J€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Ñ/Ô/€Hå	¨4Ð	0Ñ	0Ô	0ð 
ð 
ÝØ˜4¨}ÀÈFð
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 •G˜F¥u°UÐ;Ñ;Ô;¸XÑFÔFÐFå•M 'Ñ*Ô*Ò*Ð*­j½MÈ'Ñ<RÔ<RÒ.RÐ.Rõ   Ñ)Ô)Õ-=¸fÑ-EÔ-EÒEÐEÐEÐEÐEÐEð /SÐ.Rs   Â:CÃCÃ"Czarray, value, matchz`array` should be 2Dr_   z`value` needs to bez`value` needs to be ac                 ó¸   — t          dd¬¦  «        \  }}t          j        t          |¬¦  «        5  t	          | ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z:Check `_validate_diagonal_args` raises the correct errors.rI   Nrƒ   rF   )r-   rL   rM   rN   r   )r“   ÚvaluerG   rx   rP   s        r>   Útest_validate_diagonal_argsr~    s¥   € õ ! °dÐ;Ñ;Ô;�E€BˆÝ	Œ•z¨Ð	/Ñ	/Ô	/ð 2ð 2Ý  u¨bÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   °AÁAÁAÚfunctionÚfillÚaddÚc_contiguityc                 ó>  — t          dd¬¦  «        \  }}| rt          j        d¦  «        }nt          j        d¦  «        j        }|j        d         | k    sJ ‚|dk    rt
          }nt          } ||d|¦  «         t          |                     ¦   «         t          j	        d¦  «        ¦  «          ||g d	¢|¦  «         |dk    rt          j
        d
¦  «        }n)t          j	        d¦  «        t          j
        d
¦  «        z   }t          |                     ¦   «         |¦  «         t          j        g d¢¦  «        } ||||¦  «         |dk    r|}n,|t          j
        d
¦  «        z   t          j	        d¦  «        z   }t          |                     ¦   «         |¦  «         dS )zBCheck `_fill/add_to_diagonal` behaviour correct with numpy arrays.rI   Nrƒ   ©r9   r_   r  r€  r7   )r9   )r   r7   r8   r9   )rÿ   r²   é   )r-   rI   rO   ÚTr¢   r   r
   r   ÚdiagonalÚonesra  r“   )r‚  r  rx   rP   r“   ÚfuncÚexpected_diagÚ
fill_arrays           r>   Útest_fill_and_add_to_diagonalrŒ  "  sŽ  € õ ! °dÐ;Ñ;Ô;�E€BˆØð &Ý”˜FÑ#Ô#ˆˆå”˜FÑ#Ô#Ô%ˆØŒ;�~Ô&¨,Ò6Ð6Ð6Ð6à�6ÒÐÝˆˆåˆà€Dˆ��2ÑÔÐÝ�E—N’NÑ$Ô$¥e¤j°Ñ&6Ô&6Ñ7Ô7Ð7à€Dˆ�	�	�	˜2ÑÔÐØ�6ÒÐÝœ Q™œˆˆåœ
 4Ñ(Ô(­5¬<¸©?¬?Ñ:ˆÝ�E—N’NÑ$Ô$ mÑ4Ô4Ð4å”˜\˜\˜\Ñ*Ô*€JØ€Dˆ�
˜BÑÔÐØ�6ÒÐØ"ˆˆà"¥U¤\°!¡_¤_Ñ4µu´zÀ$Ñ7GÔ7GÑGˆÝ�E—N’NÑ$Ô$ mÑ4Ô4Ð4Ð4Ð4r@   r“   )ÚstandardÚ
transposedúnon-contiguousc                 óª  — t          |||¦  «        \  }}t          j        d|¬¦  «        }| dk    r6|                     |                     ¦   «         |¬¦  «        j        }|j        }nw| dk    rH|                     |                     ¦   «         |¬¦  «        ddd…ddd…f         }|ddd…ddd…f         }n)|                     |                     ¦   «         |¬¦  «        }t          j        |d¬	¦  «         t          d
¬¦  «        5  t          |d|¬¦  «         ddd¦  «         n# 1 swxY w Y   t          t          |t          d¬¦  «        |¦  «         dS )zHCheck array API `_fill_diagonal` consistent with `numpy._fill_diagonal`.)r_   r¨   r¹   rŽ  r*   r�  Nr8   r7   )ÚvalTrT   ©r}  rx   rD   r…   )r-   rI   rO   rJ   Úcopyr†  Úfill_diagonalr   r   r/   r%   )r“   rÁ   r„   rÂ   rx   r+   Úarray_npr  s           r>   Útest_fill_diagonalr–  E  s�  € õ & o°{ÀJÑOÔO�J€BˆÝŒ{˜6¨Ð4Ñ4Ô4€Hà�ÒÐØ—:’:˜hŸmšm™oœo°f�:Ñ=Ô=Ô?ˆØ”:ˆˆØ	Ð"Ò	"Ð	"Ø—:’:˜hŸmšm™oœo°f�:Ñ=Ô=¸c¸cÀ¸cÀ3À3ÀQÀ3¸hÔGˆØ˜C˜C˜a˜C   1 ˜HÔ%ˆˆà—:’:˜hŸmšm™oœo°f�:Ñ=Ô=ˆå	Ô˜ aÐ(Ñ(Ô(Ð(Ý	¨4Ð	0Ñ	0Ô	0ð 1ð 1Ý�x q¨RÐ0Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1õ •w˜x­E¸%Ð@Ñ@Ô@À(ÑKÔKÐKÐKÐKs   ÄD#Ä#D'Ä*D'c                 ó¾  — t          | ||¦  «        \  }}t          dd¬¦  «        \  }}t          j        d|¬¦  «        }|                     |                     ¦   «         |¬¦  «        }g d¢}	t          ||	|¬¦  «         t          d	¬
¦  «        5  t          ||	|¬¦  «         ddd¦  «         n# 1 swxY w Y   t          t          |t          d¬¦  «        |¦  «         dS )zMCheck `_add_to_diagonal` consistent between array API xp and numpy namespace.rI   Nrƒ   r„  r¹   r*   r6   r’  TrT   rD   r…   )	r-   rI   rO   rJ   r“  r   r   r/   r%   )
rÁ   r„   rÂ   rx   r+   Únp_xprP   r•  r  Úadd_vals
             r>   Útest_add_to_diagonalrš  _  s   € õ & o°{ÀJÑOÔO�J€BˆÝ# G¸Ð>Ñ>Ô>�H€Eˆ1åŒ{˜6¨Ð4Ñ4Ô4€HØ�zŠz˜(Ÿ-š-™/œ/°&ˆzÑ9Ô9€Hàˆiˆi€GÝ�8 7¨uÐ5Ñ5Ô5Ð5Ý	¨4Ð	0Ñ	0Ô	0ð 7ð 7Ý�x w°2Ð6Ñ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õ •w˜x­E¸%Ð@Ñ@Ô@À(ÑKÔKÐKÐKÐKs   ÂB-Â-B1Â4B1Údispatchc                 óB  — t          j        dg¦  «        }|rt          |dd ¦  «        nd } | t          j        dgg¦  «        ¦  «         | t          j        dgg¦  «        ¦  «        }}|r.t          j                             d¦  «        €t          d¦  «        ‚t          |¬¦  «        5  t          ||¦  «        �J ‚t          ||¦  «        |k    sJ ‚t          ||¦  «        d         �J ‚t          ||¦  «        d         |k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr7   r+   r8   rj   z8SCIPY_ARRAY_API is not set: not checking array_api inputrT   )
rI   r“   Úgetattrrs   rt   ru   r,   r   r†   r"   )rq  r›  Únp_arrÚexpected_numpy_array_deviceÚaÚbs         r>   Útest_sparse_devicer¢  s  s‘  € õ Œ[˜!˜ÑÔ€FàEMÐ"W¥'¨&°(¸DÑ"AÔ"AÐ"AÐSWÐØˆ=�œ q c UÑ+Ô+Ñ,Ô,¨m¨m½E¼KÈ!ÈÈÑ<NÔ<NÑ.OÔ.O€q€AØð S•B”J—N’NÐ#4Ñ5Ô5Ð=ÝÐQÑRÔRÐRÝ	¨8Ð	4Ñ	4Ô	4ð Uð UÝ  1Ñ%Ô%Ð-Ð-Ð-Ý  6Ñ*Ô*Ð.IÒIÐIÐIÐIÝ'¨¨1Ñ-Ô-¨aÔ0Ð8Ð8Ð8Ý'¨¨6Ñ2Ô2°1Ô5Ð9TÒTÐTÐTÐTÐTð	Uð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð Us   Â)ADÄDÄD)Nr   r7   c                 óH  — t          | ||¦  «        \  }}t          j                             d¦  «        }|                     ddd¬¦  «                             |¦  «        }t          j        ||¬¦  «        }|                     ||¬¦  «        }	t          d¬	¦  «        5  t          |	|¬¦  «        }
|j
        d
k    r-t          |
¦  «        d         |k    sJ ‚|
j        |	j        k    sJ ‚d d d ¦  «         n# 1 swxY w Y   t          |t          |
t          d¬¦  «        ¦  «         d S )Nr   rR  r÷   )r¨   r_   )ÚlowÚhighÚsizerõ   r*   TrT   rh   rD   r…   )r-   rI   ÚrandomÚRandomStateÚuniformrc  ÚmedianrJ   r   r   rå   r!   r+   r   r%   )r  r„   rÂ   r»   rx   r+   Úrngry   Ú	result_nprz   Ú	result_xps              r>   Útest_medianr®  ƒ  s_  € õ & i°¸jÑIÔI�J€BˆÝ
Œ,×
"Ò
" 1Ñ
%Ô
%€Cà�;Š;˜3 S¨vˆ;Ñ6Ô6×=Ò=¸jÑIÔI€DÝ”˜T¨Ð-Ñ-Ô-€Ià�:Š:�d 6ˆ:Ñ*Ô*€DÝ	¨4Ð	0Ñ	0Ô	0ð 3ð 3Ý˜D tÐ,Ñ,Ô,ˆ	àŒ;Ð,Ò,Ð,õ ! Ñ+Ô+¨AÔ.°"Ò4Ð4Ð4Ð4ØÔ# t¤{Ò2Ð2Ð2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ �I�w yµUÀ5ÐIÑIÔIÑJÔJÐJÐJÐJs   ÂA
C2Ã2C6Ã9C6c                 ó®  — dt          |¦  «        v rdnd}t          | ||¦  «        \  }}t          d¬¦  «        5  t          j        ddd¦  «                             |¦  «        }|                     ||¬	¦  «        }t          t          t          |¦  «        t          d
¬¦  «        t          |¦  «        |¬¦  «         t          j        ddd¦  «                             |¦  «        }|                     ||¬	¦  «        }t          t          t          |¦  «        t          d
¬¦  «        t          |¦  «        |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrU  ç�íµ ÷Æ°>çê-�™—q=TrT   iìÿÿÿé   éè  r*   rD   r…   ©Úrtolr   r7   )Ústrr-   r   rI   Úlinspacerc  rJ   r   r%   r   r   r   r   )r  r„   rÂ   rµ  rx   r+   Úx_npÚx_xps           r>   Útest_expit_logitrº     s‹  € ð
 ¥ J¡¤Ð/Ð/ˆ4ˆ4°U€DÝ% i°¸jÑIÔI�J€Bˆå	¨4Ð	0Ñ	0Ô	0ð 
ð 
ÝŒ~˜c 2 tÑ,Ô,×3Ò3°JÑ?Ô?ˆØ�zŠz˜$ vˆzÑ.Ô.ˆÝÝ•F˜4‘L”L¥U°5Ð9Ñ9Ô9Ý�$‰KŒKØð	
ñ 	
ô 	
ð 	
õ Œ~˜a  DÑ)Ô)×0Ò0°Ñ<Ô<ˆØ�zŠz˜$ vˆzÑ.Ô.ˆÝÝ•F˜4‘L”L¥U°5Ð9Ñ9Ô9Ý�$‰KŒKØð	
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ºDE
Å
EÅE)r   r7   Nc                 ó:  — t          | ||¦  «        \  }}t          j        g d¢g d¢g d¢ddt          j         gg d¢g|¬¦  «        }|                     ||¬¦  «        }t          j                             ||¬	¦  «        }d
t          |¦  «        v rdnd}	| dk    r|dk    s| dk    r2dt          |¦  «        v r!t          t          ||¬	¦  «        ||	¬¦  «         t          d¬¦  «        5  t          ||¬	¦  «        }
t          |
t          d¬¦  «        }
t          ||
|	¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        dt          j        dgg d¢t          j        ddgddt          j         gg d¢g|¬¦  «        }|                     ||¬¦  «        }t          j                             ||¬	¦  «        }t          d¬¦  «        5  t          ||¬	¦  «        }t          |t          d¬¦  «        }t          |||	¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r   r9   r³  ©r8   rÏ   r³  ©iöÿÿÿr   r   iÎÿÿÿrµ   rw  r¹   r*   rõ   rU  r°  r±  r’   rD   rh   ÚCPUr´  TrT   r…   r   r³  )r-   rI   rJ   ÚinfÚscipyÚspecialÚ	logsumexpr¶  r   r   r   r%   Únan)rÁ   r„   rÂ   r»   rx   r+   r•  r  Úres_nprµ  Úres_xpÚ
array_np_2Ú
array_xp_2Úres_np_2Úres_xp_2s                  r>   Ú#test_logsumexp_like_scipy_logsumexprË  º  sÜ  € õ & o°{ÀJÑOÔO�J€BˆÝŒ}àˆLˆLØˆMˆMØˆKˆKØ�!•e”i�ZÐ ØˆIˆIð	
ð ð	ñ 	ô 	€Hð �zŠz˜(¨6ˆzÑ2Ô2€HåŒ]×$Ò$ X°DÐ$Ñ9Ô9€Fà¥ J¡¤Ð/Ð/ˆ4ˆ4°U€Dð 	˜7Ò"Ð" {°eÒ';Ð';ØÐ-Ò-Ð-°%½3¸{Ñ;KÔ;KÐ2KÐ2Kå�
 8°$Ð7Ñ7Ô7¸ÀdÐKÑKÔKÐKå	¨4Ð	0Ñ	0Ô	0ð 3ð 3Ý˜H¨4Ð0Ñ0Ô0ˆÝ˜¥E°%Ð8Ñ8Ô8ˆÝ˜ ¨TÐ2Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ ”à•”	˜4Ð ØˆMˆMÝŒY˜˜1ÐØ�!•e”i�ZÐ ØˆIˆIð	
ð ð	ñ 	ô 	€Jð —’˜J¨v�Ñ6Ô6€JåŒ}×&Ò& z¸Ð&Ñ=Ô=€Hå	¨4Ð	0Ñ	0Ô	0ð 7ð 7Ý˜j¨tÐ4Ñ4Ô4ˆÝ˜8­°eÐ<Ñ<Ô<ˆÝ˜ (°Ð6Ñ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s$   Ã';D.Ä.D2Ä5D2Ç;HÈHÈHc                 óÒ  — t          ddd¬¦  «        \  }}t          j        g d¢g d¢g d¢gt          j        ¬¦  «        }|                     ||¬	¦  «        }t	          d
¬¦  «        5  t          || ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |j        |j        k    sJ ‚t          t          |t          d¬¦  «        t          j                             || ¬¦  «        d¬¦  «         d S )Nr’   ÚmpsrU  )r„   rÂ   r¼  r½  r¾  r¹   r*   TrT   rõ   rD   r…   r°  r´  )r-   rI   rJ   rO  r   r   rº   rU  r   r%   rÁ  rÂ  rÃ  )r»   rx   r+   r•  r  rÆ  s         r>   Ú7test_logsumexp_integer_array_api_on_float32_only_devicerÎ  ò  s@  € å% g¸5ÈYÐWÑWÔW�J€Bˆõ Œ}Ø	ˆˆ�}�}�} k k kÐ2½%¼+ðñ ô €Hð �zŠz˜(¨6ˆzÑ2Ô2€Hå	¨4Ð	0Ñ	0Ô	0ð 1ð 1Ý˜H¨4Ð0Ñ0Ô0ˆð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð Œ<˜2œ:Ò%Ð%Ð%Ð%ÝÝ��5¨Ð/Ñ/Ô/ÝŒ×Ò ¨tÐÑ4Ô4Øðñ ô ð ð ð s   Á&BÂBÂB)r  Údevice_Úexpected_types))rI   N©rS  rU  Úfloat16)rh   N)rS  rU  )r’   rD   rÑ  )r’   rH   rÑ  )r’   rÍ  )rU  rÒ  c                 ó˜   ‡— t          | |¬¦  «        \  Š}t          ‰|¬¦  «        }t          ˆfd„|D ¦   «         ¦  «        }||k    sJ ‚d S )Nrƒ   r*   c              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S rÚ   )r�  )r   rÂ   rx   s     €r>   ú	<genexpr>z-test_supported_float_types.<locals>.<genexpr>  s-   øè è € ÐNÐN°•W˜R Ñ,Ô,ÐNÐNÐNÐNÐNÐNr@   )r-   r'   Útuple)r  rÏ  rÐ  r+   Úfloat_typesrÃ   rx   s         @r>   Útest_supported_float_typesrØ    sf   ø€ õ & i¸WÐEÑEÔE�J€BˆÝ(¨°FÐ;Ñ;Ô;€KÝÐNÐNÐNÐN¸~ÐNÑNÔNÑNÔN€HØ˜(Ò"Ð"Ð"Ð"Ð"Ð"r@   Úuse_sample_weightc                 óÈ  — d}d}t           j                             d¦  «        }|                     d||¦  «                             |¦  «        }|                     ||¦  «                             |¦  «        }t          |||¦  «        \  }	}
|	                     ||
¬¦  «        }|	                     ||
¬¦  «        }| r4t          j        |¦  «        }d|ddd…<   |	                     ||
¬¦  «        }nd	\  }} t          |¬
¦  «        |||¬¦  «        }t          d¬¦  «        5  t          ||||	¬¦  «        }ddd¦  «         n# 1 swxY w Y   t          j        ||¦  «        sJ ‚dS )z¿Check that the array API version of :func:`_half_multinomial_loss` works
    correctly and matches the results produced by :class:`HalfMultinomialLoss`
    of the private `_loss` module.
    r¨   r9   é*   r   r*   r8   r7   N)NN)Ú	n_classes)Úy_trueÚraw_predictionrx  TrT   )r  Úpredrx  rx   )rI   r§  r¨  Úrandintrc  Úrandr-   rJ   Ú	ones_liker   r   r   Úisclose)rÙ  r  r„   rÂ   Ú	n_samplesrÜ  r«  r  rß  rx   r+   Úy_xpÚpred_xprx  Úsample_weight_xpÚnp_lossÚxp_losss                    r>   Útest_half_multinomial_lossrê    sÀ  € ð €IØ€IÝ
Œ,×
"Ò
" 2Ñ
&Ô
&€CØ�Š�A�y )Ñ,Ô,×3Ò3°JÑ?Ô?€AØ�8Š8�I˜yÑ)Ô)×0Ò0°Ñ<Ô<€DÝ% i°¸jÑIÔI�J€BˆØ�:Š:�a ˆ:Ñ'Ô'€DØ�jŠj˜ fˆjÑ-Ô-€GØð 5Ýœ¨Ñ*Ô*ˆØˆ�a�d˜�dÑØŸ:š: m¸F˜:ÑCÔCÐÐà*4Ñ'ˆÐ'à6Õ!¨IÐ6Ñ6Ô6Ø °]ðñ ô €Gõ 
¨4Ð	0Ñ	0Ô	0ð 
ð 
Ý(Ø˜Ð0@ÀRð
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 Œ=˜ 'Ñ*Ô*Ð*Ð*Ð*Ð*Ð*s   Ä E Å EÅEc                 ó6  — t          | ||¦  «        \  }}t          j        d¦  «                             |¦  «        }|                     ||¬¦  «        }t          d¬¦  «        5  t          ||¬¦  «        }d d d ¦  «         n# 1 swxY w Y   ||j        k    sJ ‚d S )Nr³  r*   TrT   r  )r-   rI   ra  rc  rJ   r   r   rº   )r  r„   rÂ   rx   r+   ry   rz   Ú	ret_dtypes           r>   Útest_matching_numpy_dtyperí  =  sÜ   € õ
 & i°¸jÑIÔI�J€BˆÝŒ<˜ÑÔ×$Ò$ ZÑ0Ô0€DØ�:Š:�d 6ˆ:Ñ*Ô*€DÝ	¨4Ð	0Ñ	0Ô	0ð 7ð 7Ý)¨$°2Ð6Ñ6Ô6ˆ	ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7à˜œ
Ò"Ð"Ð"Ð"Ð"Ð"s   Á#BÂBÂB)zrs   Ú	functoolsr   rI   rL   rÁ  Úscipy.sparseÚsparserd   Únumpy.testingr   Úscipy.specialr   r   Úsklearn._configr   Úsklearn._lossr   Ú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   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r+   r†   Úsklearn.utils._testingr,   r-   r.   r/   r0   Úsklearn.utils.fixesr1   r2   r3   r4   ÚmarkÚparametrizerJ   r?   rR   rX   rb   rf   r{   r�   rœ   r¥   rÅ   rÎ   rq   rN   ÚZeroDivisionErrorrÓ   rÕ   rñ   rÄ  rÀ  rý   r  r  r  r  r*  r>  rB  rF  rH  rJ  re   rL  rP  rW  rh  Úskipifrt   ru   rp  r{  r“   r~  rŒ  r–  rš  r¢  r®  rº  rË  rÎ  rØ  rê  rí  rl   r@   r>   ú<module>rý     s  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð à €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &ð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ðDð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tð „×Ò˜˜}˜uœ}¨Y¨Y¨YÑ7Ô7¸¸¸ÀIÐNÑOÔOð&ð &ñ PÔOð&ð	(ð 	(ð 	(ð )Ø„×Ò˜˜}˜uœ}¨Y¨Y¨YÑ7Ô7¸¸¸ÀIÐNÑOÔOð	#ð 	#ñ PÔOñ )Ô(ð	#ð )Ø„×ÒÐ+Ð-VÐ-VÐ-VÑWÔWð
#ð 
#ñ XÔWñ )Ô(ð
#ð )ð#ð #ñ )Ô(ð#ð )ð ð  ñ )Ô(ð ð4 „×ÒØðð à<Ð<Ñ>Ô>ðñ ô ñô ð?ð ?ñô ð?ðCð Cð Cð0 „×Ò˜ wÐ0BÐ&CÑDÔDð*ð *ñ EÔDð*ð „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×ÒØ(ð 	 Ø	ˆ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ñ;ô ñ	ô ðBGð, „×ÒØ.Ø-Ð-ÀuÐMÑMÔMñô ðð ñ	ô ðð* „×ÒØ.Ø-Ð-ÀtÐLÑLÔLñô ð „×ÒØ%ð Ø�ˆFØØ$ð		
ð Ø�ˆVˆHà˜Ð#Øð	
ð ØˆLˆLØØð		
ð 
ˆR�ˆGÐ&Ð(RÐSð)ñô ð27ð 7ñ3ô ñ	ô ð:7ð2ð 2ð 2ð )ð,Ið ,Iñ )Ô(ð,Iðd )Ø„×Ò˜Ð$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Ð!ð	
ð
 ˆQ�”	Ð	˜H cÐ*Ø
ˆR�%”)�Ð	˜h¨Ð-ØŒ9ˆ*�u”y�jÐ	! 8¨e¬i¨ZÐ8àˆYˆY˜œ E¤I¨u¬yÐ9¸;¸;¸;ÐGØˆG�H 1Ð%Ñ%Ô%ØˆOˆOð	
ð ˆYˆY˜œ E¤I¨u¬yÐ9¸;¸;¸;ÐGØˆG�H 1Ð%Ñ%Ô%Ø�%”)˜SÐ!ð	
ðG(ñ+ô +ðX&ð &ñY+ô +ñ LÔKñ )Ô(ð\&ð „×ÒØ(Ø-Ð-Ñ/Ô/ñô ð;ð ;ñ	ô ð;ð" )Ø„×Ò˜ V¨WÐ$5Ñ6Ô6ð,ð ,ñ 7Ô6ñ )Ô(ð,ð ,ð ,ð ,ð)ð )ð )ð )ð )�mñ )ô )ð )ð ð ð ð ð  ñ ô ð ð( )Ø„×ÒØ à	Ð3Ð3Ð4Ø	Ð?Ð?Ð@Ø	Ð*Ð*Ð+ðñô ð5ð 5ñô ñ )Ô(ð5ð )ð:ð :ñ )Ô(ð:ð  )ð"ð "ñ )Ô(ð"ð  )ð
<ð 
<ñ )Ô(ð
<ð )ð,ð ,ñ )Ô(ð,ð )Ø„×Ò˜  c 
˜|¨\¨R¬\¸CÀ¸:¸,Ñ-GÔ-GÐHÑIÔIðð ñ JÔIñ )Ô(ðð. „×ÒØ(Ø-Ð-Ñ/Ô/ñô ð.ð .ñ	ô ð.ð „×ÒØ(Ø-Ð-Ñ/Ô/ñô ð
Dð 
Dñ	ô ð
Dð „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×Ò˜ D¨% =Ñ1Ô1Ø„×Ò˜¨4°¨-Ñ8Ô8Ø„×Ò˜¨¨¨Ñ5Ô5Ø„×Ò˜Ð&JÐ&JÐ&JÑKÔKðJð Jñ LÔKñ 6Ô5ñ 9Ô8ñ 2Ô1ñ	ô ðJðB „×ÒØ„J‡N‚NÐ$Ñ%Ô%¨Ò,Ð5Tð ñ ô ð2ð 2ñô ð2ð6 „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð!5Ð!5Ð!5Ñ6Ô6Ø„×ÒÐ-Ð/EÐ/EÐ/EÑFÔFð!Fð !Fñ GÔFñ 7Ô6ñ :Ô9ñ	ô ð!FðH „×ÒØà	ˆŒ�Y�Y�YÑ	Ô	 Ð$:Ð;Ø	ˆŒ�q˜!�f˜q !˜fÐ%Ñ	&Ô	&¨¨¬°I°I°IÑ(>Ô(>Ð@UÐVØ	ˆŒ�q˜!�f˜q !˜fÐ%Ñ	&Ô	&¨	¨	¨	Ð3HÐIàˆEŒK˜!˜Q˜ ! Q Ð(Ñ)Ô)ØˆEŒK˜!˜Q˜ ! Q Ð(Ñ)Ô)Ø#ð	
ð		ñô ð2ð 2ñô ð2ð „×Ò˜ f¨e _Ñ5Ô5Ø„×Ò˜¨$°¨Ñ7Ô7ð5ð 5ñ 8Ô7ñ 6Ô5ð5ðB „×Ò˜Ð"NÐ"NÐ"NÑOÔOØ„×ÒØ.Ø-Ð-Ñ/Ô/ñô ðLð Lñ	ô ñ PÔOð
Lð* „×ÒØ.Ø-Ð-Ñ/Ô/ñô ðLð Lñ	ô ðLð  „×Ò˜¨.Ñ9Ô9Ø„×Ò˜ d¨E ]Ñ3Ô3ðUð Uñ 4Ô3ñ :Ô9ðUð „×ÒØ(Ø-Ð-Ñ/Ô/ñô ð „×Ò˜   Ñ.Ô.ðKð Kñ /Ô.ñ	ô ð
Kð0 „×ÒØ(Ø-Ð-Ñ/Ô/ñô ð
ð 
ñ	ô ð
ð, „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×Ò˜   Ñ.Ô.ð07ð 07ñ /Ô.ñ	ô ð
07ðf „×Ò˜   Ñ.Ô.ðð ñ /Ô.ðð* „×ÒØ.ðð ð ñ	ô 	ð#ð #ñ	ô 	ð#ð „×ÒÐ,¨u°d¨mÑ<Ô<Ø„×ÒØ(Ø-Ð-Ñ/Ô/ñô ð+ð +ñ	ô ñ =Ô<ð
+ð> „×ÒØ(Ø-Ð-Ñ/Ô/ñô ð#ð #ñ	ô ð#ð #ð #r@   