Ë
    ÷Q(hdE  ã            
       óÔ  — 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
mZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZmZ d d
lmZm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$m%Z%m&Z&m'Z'm(Z( d dl#m)Z* 	 d dl+m,Z, dZ-ej^                  ja                  e- d¬«      Z1 ejd                  g d¢g d¢g d¢g«      Z3dZ4e3jj                  \  Z6Z7 ee4e3dd¬«      \  Z8Z9d9d„Z:ej^                  jw                  de$«      d„ «       Z<ej^                  jw                  d d!d" ejz                  d#e1¬$«      g«      ej^                  jw                  d%ej|                  ej~                  g«      d:d&„«       «       Z@ej^                  jw                  d'dge&¢«      ej^                  jw                  d d!d" ejz                  d#e1¬$«      g«      ej^                  jw                  d%ej|                  ej~                  f«      	 d;d(„«       «       «       ZAd)„ ZBej^                  jw                  d'dge&¢«      d;d*„«       ZCej^                  ja                  e- d¬«      ej^                  jw                  d%ej|                  ej~                  f«      ej^                  jw                  de$«      d;d+„«       «       «       ZDej^                  ja                  e- d¬«      ej^                  jw                  d%ej|                  ej~                  f«      d;d,„«       «       ZEd;d-„ZFd;d.„ZGd/„ ZHd0„ ZId1„ ZJej^                  jw                  d d!d" ejz                  d#e1¬$«      g«      ej^                  jw                  d%ej|                  ej~                  g«      d2„ «       «       ZKej^                  ja                  e-d3¬«      d4„ «       ZLej^                  jw                  d5g d6¢«      ej^                  jw                  d7e&«      d8„ «       «       ZMy# e.$ r dZ-Y �Œfw xY w)<é    )ÚMockN)Úsparse)Úeigh)ÚeigshÚlobpcg)ÚKMeans)Ú
make_blobs)ÚSpectralEmbeddingÚ_spectral_embeddingÚspectral_embedding)Ú_graph_connected_componentÚ_graph_is_connected)Únormalized_mutual_info_scoreÚpairwise_distances©Ú
rbf_kernel)ÚNearestNeighbors)Úassert_array_almost_equalÚassert_array_equal)Ú_deterministic_vector_sign_flip)ÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚparse_versionÚ
sp_version)Ú	laplacian)Úsmoothed_aggregation_solverTFz1PyAMG is required for the tests in this function.)Úreason)ç        ç      @r   r   r   )r   r   g      @r   r   )ç      ð?r   r   r    r!   éè  r!   é*   )Ú	n_samplesÚcentersÚcluster_stdÚrandom_statec                 óÜ   — |dz  }t        | j                  |j                  «      D ]D  \  }}t        j                  ||z
  dz  «      |k  rŒ%t        j                  ||z   dz  «      |k  rŒDJ ‚ y)zLCheck array A and B are equal with possible sign flipping on
    each columné   N)ÚzipÚTÚnpÚmax)ÚAÚBÚtolÚtol_squaredÚA_colÚB_cols         úl/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyÚ _assert_equal_with_sign_flippingr5   7   sl   € ð �q‘&€KÜ˜AŸC™C §¡›ò 
‰ˆˆuä�F‰F�E˜E‘M aÑ'Ó(¨KÓ7Ü�v‰v�u˜u‘}¨Ñ*Ó+¨{Ó:ð	
ð;ñ
ó    Úcoo_containerc                 ó–  — t         j                  j                  d«      }d}dddd|g}|j                  |«      }g }t	        |d d |dd  «      D ]�  \  }}||| }t        t        |«      dz
  «      D ]  }	|j                  ||	   ||	dz      f«       Œ  dt        |«      dz
  }}
d}|j                  |
||¬	«      }|j                  |
||¬	«      }|j                  t	        ||   ||   «      «       ŒŸ t        t        j                  |«      j                  «      \  }}|j                  d
dt        |«      ¬	«      } | |||ff«      }d||j                  z   z  }t	        |d d |dd  «      D ]a  \  }}t        |||   «      }||z
  }|j                  «       |k(  sJ ‚t        |||dz
     «      }|j                  «       |k(  sJ ‚t!        ||«       Œc y )Nr#   i,  r   éy   éÈ   éÿÿÿÿé   r"   )Úsizeçš™™™™™¹?ç      à?)r,   ÚrandomÚRandomStateÚpermutationr*   ÚrangeÚlenÚappendÚrandintÚextendÚtupleÚarrayr+   Úuniformr   Úsumr   )r7   Úrngr$   Ú
boundariesÚpÚconnectionsÚstartÚstopÚgroupÚiÚmin_idxÚmax_idxÚn_random_connectionsÚsourceÚtargetÚrow_idxÚ
column_idxÚdataÚaffinityÚcomponent_1Úcomponent_sizeÚcomponent_2s                         r4   Ú%test_sparse_graph_connected_componentr`   B   sõ  € ä
�)‰)×
Ñ
 Ó
#€CØ€IØ�R˜˜c 9Ð-€JØ�‰˜	Ó"€AØ€Kä˜: c r˜?¨J°q°r¨NÓ;ò >‰ˆˆtØ�%˜�ˆô ”s˜5“z A‘~Ó&ò 	9ˆAØ×Ñ  a¡¨%°°A±©,Ð7Õ8ð	9ð œc %›j¨1™n�ˆØ#ÐØ—‘˜W gÐ4H�ÓIˆØ—‘˜W gÐ4H�ÓIˆØ×Ñœ3˜u V™}¨e°F©mÓ<Õ=ð>ô  ¤§¡¨Ó 5× 7Ñ 7Ó8Ñ€GˆZØ�;‰;�s˜B¤S¨Ó%5ˆ;Ó6€DÙ˜d W¨jÐ$9Ð:Ó;€HØ�h §¡Ñ+Ñ,€Hä˜: c r˜?¨J°q°r¨NÓ;ò 	5‰ˆˆtÜ0°¸1¸U¹8ÓDˆØ ™ˆØ�‰Ó  NÒ2Ð2Ð2ô 1°¸1¸TÀA¹X¹;ÓGˆØ�‰Ó  NÒ2Ð2Ð2Ü˜;¨Õ4ñ	5r6   Úeigen_solverÚarpackr   Úamg)ÚmarksÚdtypec                 ó"  — t         j                  j                  |«      }d}t        j                  |dz  |dz  g¬«      }t        j                  |j                  ||«      «      dz   |d|…d|…f<   t        j                  |j                  ||«      «      dz   ||d …|d …f<   t        |d«      }|d | j                  «       sJ ‚||d  j                  «       rJ ‚t        |d«      }|d | j                  «       rJ ‚||d  j                  «       sJ ‚d|d|dz   f<   d||dz   df<   d|j                  d d d|z  dz   …<   d||j                  z   z  }t        j                  d|z  ¬«      }d|d| t        ddt         j                  j                  |«      | ¬	«      }|j                  |j                  |«      «      }	t        j                  |	j                  «       dk  t         j                   ¬
«      }
t#        ||
«      t%        j&                  d«      k(  sJ ‚y )Néd   r)   ©Úshaper   r;   r<   r?   Úprecomputed©Ún_componentsr\   r'   ra   ©re   r!   )r,   r@   rA   ÚzerosÚabsÚrandnr   ÚallÚanyÚflatr+   r
   Úfit_transformÚastyperI   ÚravelÚint64r   ÚpytestÚapprox)ra   re   Úseedr'   Ún_sampler\   Ú	componentÚ
true_labelÚ
se_precompÚembedded_coordinateÚlabel_s              r4   Ú&test_spectral_embedding_two_componentsr�   n   s  € ô —9‘9×(Ñ(¨Ó.€LØ€HÜ�x‰x˜x¨!™|¨X¸©\Ð:Ô;€Hô 	�‰ˆ|×!Ñ! (¨HÓ5Ó6¸Ñ:ð ˆQˆxˆZ˜˜8˜Ð#Ñ$ô
 	�‰ˆ|×!Ñ! (¨HÓ5Ó6¸Ñ:ð ˆX‰Z˜™Ð#Ñ$ô
 +¨8°QÓ7€IØ�Y�hÐ×#Ñ#Ô%Ð%Ð%Ø˜˜Ð#×'Ñ'Ô)Ð)Ð)Ü*¨8°RÓ8€IØ˜˜(Ð#×'Ñ'Ô)Ð)Ð)Ø�X�YÐ×#Ñ#Ô%Ð%Ð%ð !"€HˆQ�˜1‘ˆ_ÑØ !€HˆX˜‰\˜1ˆ_ÑØ)*€H‡M�MÑ%�Q˜‘\ AÑ%Ð%Ñ&Ø�h §¡Ñ+Ñ,€Hä—‘  H¡Ô-€JØ€Jˆq�Ðä"ØØÜ—Y‘Y×*Ñ*¨4Ó0Ø!ô	€Jð %×2Ñ2°8·?±?À5Ó3IÓJÐä�X‰XÐ)×/Ñ/Ó1°AÑ5¼R¿X¹XÔF€FÜ'¨
°FÓ;¼v¿}¹}ÈSÓ?QÒQÐQÑQr6   Úsparse_containerc                 óÒ  — d}| €t         n | t         «      }t        ddt        j                  j	                  |«      |¬«      }t        dd|t        j                  j	                  |«      |¬«      }|j                  t        |j                  |«      |¬«      «      }|j                  |j                  |«      «      }	t        |j                  |j                  «       t        ||	d«       y )	Nr!   r)   rj   rk   Úrbf)rl   r\   Úgammar'   ra   ©r…   çš™™™™™©?)ÚSr
   r,   r@   rA   rt   r   ru   r   Úaffinity_matrix_r5   )
r‚   ra   re   rz   r…   ÚXr~   Úse_rbfÚembed_precompÚ	embed_rbfs
             r4   Ú,test_spectral_embedding_precomputed_affinityrŽ   £   sÅ   € ð €EØÐ%�Ñ+;¼AÓ+>€Aä"ØØÜ—Y‘Y×*Ñ*¨4Ó0Ø!ô	€Jô ØØØÜ—Y‘Y×*Ñ*¨4Ó0Ø!ô€Fð ×,Ñ,¬Z¸¿¹À»ÈuÔ-UÓV€MØ×$Ñ$ Q§X¡X¨e£_Ó5€IÜ˜j×9Ñ9¸6×;RÑ;RÔSÜ$ ]°I¸tÕDr6   c                  ó"  — d} g }dD ]t  }t        | |z   ¬«      j                  t        «      }|j                  t        d¬«      }t	        ddd| ¬«      j                  |«      j
                  }|j                  |«       Œv t        |d   |d	   «       y )
Nr)   )r   é
   )Ún_neighborsÚconnectivity)Úmoder   Úprecomputed_nearest_neighbors)r'   rl   r\   r‘   r<   )r   Úfitrˆ   Úkneighbors_graphr
   Ú
embedding_rE   r   )r‘   ÚresultsÚadditional_neighborsÚnnÚgraphÚ	embeddings         r4   Ú,test_precomputed_nearest_neighbors_filteringr�   Ç   s˜   € à€KØ€GØ 'ò "ÐÜ¨+Ð8LÑ*LÔM×QÑQÔRSÓTˆØ×#Ñ#¤A¨NÐ#Ó;ˆäØØØ8Ø'ô	÷ ‰S�‹Zß‰Zð 	ð 	�‰�yÕ!ð"ô �w˜q‘z 7¨1¡:Õ.r6   c                 óÔ  ‡— dŠt        t        ‰¬«      }| €t        n | t        «      }t        dˆfd„‰t        j                  j                  |«      ¬«      }t        dd‰t        j                  j                  |«      ¬«      }|j                  |«      }|j                  |«      }t        |j                  |j                  «       t        ||j                  «       t        ||d«       y )NgÍÌÌÌÌÌì?r†   r)   c                 ó   •— t        | ‰¬«      S )Nr†   r   )Úxr…   s    €r4   ú<lambda>z;test_spectral_embedding_callable_affinity.<locals>.<lambda>æ   s   ø€ œJ q°Ô6€ r6   )rl   r\   r…   r'   r„   r‡   )
r   rˆ   r
   r,   r@   rA   rt   r   r‰   r5   )	r‚   rz   ÚkernrŠ   Úse_callabler‹   r�   Úembed_callabler…   s	           @r4   Ú)test_spectral_embedding_callable_affinityr¥   Ý   sÈ   ø€ ð €EÜ”a˜uÔ%€DØÐ%�Ñ+;¼AÓ+>€Aä#ØÛ6ØÜ—Y‘Y×*Ñ*¨4Ó0ô	€Kô ØØØÜ—Y‘Y×*Ñ*¨4Ó0ô	€Fð ×$Ñ$ QÓ'€IØ ×.Ñ.¨qÓ1€NÜ˜k×:Ñ:¸F×<SÑ<SÔTÜ˜d F×$;Ñ$;Ô<Ü$ Y°ÀÕEr6   c           	      óF  — t        ddddt        j                  j                  |«      ¬«      }t        ddddt        j                  j                  |«      ¬«      }|j	                  t
        j                  | «      «      }|j	                  t
        j                  | «      «      }t        ||d«       t        j                  g d¢t        j                  ¬	«      }t        j                  g d
¢t        j                  ¬	«      }t        j                  g d¢t        j                  ¬	«      }	 |t        j                  |	|	g«      t        j                  ||g«      t        j                  ||g«      ffd¬«      }
d|_        d|_        |j	                  |
j                  | «      «      }|j	                  |
j                  | «      «      }t        ||d«       |
j                  «       }
|
j                  j                  t        j                  «      |
_        |
j                  j                  t        j                  «      |
_        t         t#        d«      k\  }|r|j	                  |
«       y d}t%        j&                  t(        |¬«      5  |j	                  |
«       d d d «       y # 1 sw Y   y xY w)Nr)   Únearest_neighborsrc   é   )rl   r\   ra   r‘   r'   rb   gñhãˆµøä>)r   r   r<   r)   é   r©   é   rm   )r<   r)   r)   r©   rª   r¨   r¨   )rg   rg   rg   r<   rg   rg   rg   )é   r«   rh   rj   z1.11.3z=Only sparse matrices with 32-bit integer indices are accepted©Úmatch)r
   r,   r@   rA   rt   rˆ   ru   r5   rI   Úint32rw   Úhstackr\   ÚtocsrÚindptrÚindicesr   r   rx   ÚraisesÚ
ValueError)re   r7   rz   Úse_amgÚ	se_arpackÚ	embed_amgÚembed_arpackÚrowÚcolÚvalr\   Ú*scipy_graph_traversal_supports_int64_indexÚerr_msgs                r4   Ú"test_spectral_embedding_amg_solverr¾   ÷   s  € ô ØØ$ØØÜ—Y‘Y×*Ñ*¨4Ó0ô€Fô "ØØ$ØØÜ—Y‘Y×*Ñ*¨4Ó0ô€Ið ×$Ñ$¤Q§X¡X¨e£_Ó5€IØ×*Ñ*¬1¯8©8°E«?Ó;€LÜ$ Y°¸dÔCô
 �(‰(Ò(´·±Ô
9€CÜ
�(‰(Ò(´·±Ô
9€CÜ
�(‰(Ò4¼B¿H¹HÔ
E€CáÜ	�‰�C˜�:Ó	¤§¡¨C°¨:Ó!6¼¿	¹	À3ÈÀ*Ó8MÐ NÐOØô€Hð $€F„OØ&€IÔØ×$Ñ$ X§_¡_°UÓ%;Ó<€IØ×*Ñ*¨8¯?©?¸5Ó+AÓB€LÜ$ Y°¸dÔCð
 �~‰~Ó€HØ—o‘o×,Ñ,¬R¯X©XÓ6€H„OØ×'Ñ'×.Ñ.¬r¯x©xÓ8€HÔô 2<¼}ÈXÓ?VÑ1VÐ.Ù1Ø×Ñ˜XÕ&àQˆÜ�]‰]œ:¨WÔ5ñ 	+Ø× Ñ  Ô*÷	+÷ 	+ñ 	+ús   É<JÊJ c                 ój  — d}t        j                  ||d|¬«      }|j                  | «      }t        j                  |«      t        j                  |j                  «       «      z
  }||j                  z   }t        |ddd¬«      }t        d«      D ]"  }t        |dd|d	z   ¬«      }t        ||d
¬«       Œ$ y )Nrg   r>   )Údensityr'   r�   rc   r   )rl   ra   r'   r©   r<   r‡   )r0   )
r   Úrandru   ÚtriuÚdiagsÚdiagonalr+   r   rC   r5   )	re   rz   Ú	num_nodesrŠ   ÚupperÚ
sym_matrixrœ   rS   Únew_embeddings	            r4   Ú*test_spectral_embedding_amg_solver_failurerÉ   2  s§   € ð €IÜ�‰�I˜y°#ÀDÔI€AØ	�‰�‹€AÜ�K‰K˜‹NœVŸ\™\¨!¯*©*«,Ó7Ñ7€EØ˜Ÿ™‘€JÜ"Ø °%Àaô€Iô
 �1‹Xò MˆÜ*Ø R°eÈ!ÈaÉ%ô
ˆô 	)¨°MÀtÖLñ	Mr6   c                 óT  — t         j                  j                  | «      }t        t        d|¬«      }t        t        dd|¬«      }||fD ]]  }t        t        |d¬«      }|j                  |j                  t        «      «       t        t        |j                  t        «      dd	«       Œ_ y )
Nr„   )rl   r\   r'   r§   r¨   )rl   r\   r‘   r'   r�   )Ú
n_clustersr'   Ún_initr!   r)   )r,   r@   rA   r
   rË   r   r•   rt   rˆ   r   r   Úlabels_Útrue_labels)rz   r'   r‹   Úse_knnÚseÚkms         r4   Ú!test_pipeline_spectral_clusteringrÒ   I  s”   € ä—9‘9×(Ñ(¨Ó.€LÜÜ¨%¸lô€Fô ÜØ$ØØ!ô	€Fð �vÐò 
ˆÜœz¸ÈRÔPˆØ
�‰ˆr×Ñ¤Ó"Ô#Ü!Ü(¨¯©´[ÓAÀ3Èõ	
ñ
r6   c                 ó¸  — t        j                  g d¢g d¢g d¢g d¢g d¢g«      }t        |«      rJ ‚t        D ]  }t         ||«      «      sŒJ ‚ t        D ]  }t         ||«      «      sŒJ ‚ t        j                  g d¢g d¢g d¢g d¢g d¢g«      }t        |«      sJ ‚t        D ]  }t         ||«      «      rŒJ ‚ t        D ]  }t         ||«      «      rŒJ ‚ y )N)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<   r   r   )r,   rI   r   r   r   )rz   r›   Úcsr_containerÚcsc_containers       r4   Útest_connectivityrÖ   ]  sð   € ä�H‰HâÚÚÚÚð	
ó€Eô # 5Ô)Ð)Ð)Ü'ò =ˆÜ&¡}°UÓ';Õ<Ð<Ð<ð=ä'ò =ˆÜ&¡}°UÓ';Õ<Ð<Ð<ð=ô �H‰HâÚÚÚÚð	
ó€Eô ˜uÔ%Ð%Ð%Ü'ò 9ˆÜ"¡=°Ó#7Õ8Ð8Ð8ð9ä'ò 9ˆÜ"¡=°Ó#7Õ8Ð8Ð8ñ9r6   c                  óÀ   — t         j                  j                  d«      } | j                  dd«      }t	        |«      }t        |«      }t        |«      }t        ||«       y )Né$   r�   é   )r,   r@   rA   rp   r   r   r   )r'   r[   ÚsimsÚembedding_1Úembedding_2s        r4   Ú%test_spectral_embedding_deterministicrÝ   ~  sP   € ä—9‘9×(Ñ(¨Ó,€LØ×Ñ˜b "Ó%€DÜ�dÓ€DÜ$ TÓ*€KÜ$ TÓ*€KÜ˜k¨;Õ7r6   c                  ó<  — t         j                  j                  d«      } | j                  dd«      }t	        |«      }d}t        |d|d¬«      }t        |dd¬«      \  }}t        |«      \  }}|j                  d | }	t        |	«      j                  }	t        ||	«       y )	NrØ   r�   rÙ   é   F)Únorm_laplacianrl   Ú
drop_firstT)ÚnormedÚreturn_diag)r,   r@   rA   rp   r   r   Úcsgraph_laplacianr   r+   r   r   )
r'   r[   rÚ   rl   rÛ   r   ÚddÚ_Údiffusion_maprÜ   s
             r4   Ú$test_spectral_embedding_unnormalizedrè   ˆ  s˜   € ô —9‘9×(Ñ(¨Ó,€LØ×Ñ˜b "Ó%€DÜ�dÓ€DØ€LÜ$Ø˜U°È%ô€Kô
 & d°5ÀdÔK�M€IˆrÜ˜I“Ñ€A€}Ø—/‘/ - <Ð0€KÜ1°+Ó>×@Ñ@€Kä˜k¨;Õ7r6   c                  ój  — t         j                  j                  d«      } | j                  dd«      }t	        |«      }d}t        d«      D ]g  }t        |d|d|¬«      }t        j                  |d d …df   «      t        j                  d«      k(  sJ ‚t        j                  |d d …df   «      d	kD  rŒgJ ‚ y )
NrØ   r�   rÙ   r)   F)rà   rl   rá   r'   r   r<   gü©ñÒMbP?)
r,   r@   rA   rp   r   rC   r   Ústdrx   ry   )r'   r[   rÚ   rl   rz   rœ   s         r4   Ú*test_spectral_embedding_first_eigen_vectorrë   œ  s®   € ô —9‘9×(Ñ(¨Ó,€LØ×Ñ˜b "Ó%€DÜ�dÓ€DØ€Lä�b“	ò 
.ˆÜ&ØØ Ø%ØØô
ˆ	ô �v‰v�i¢ 1 ‘oÓ&¬&¯-©-¸Ó*:Ò:Ð:Ð:Ü�v‰v�i¢ 1 ‘oÓ&¨Ó-Ð-Ð-ñ
.r6   c                 óü   — t         j                  |«      }t        dd| d¬«      }|j                  |«      }|j                  |k(  sJ ‚|j
                  j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚y)a\  Check that `SpectralEmbedding is preserving the dtype of the fitted
    attribute and transformed data.

    Ideally, this test should be covered by the common test
    `check_transformer_preserve_dtypes`. However, this test only run
    with transformers implementing `transform` while `SpectralEmbedding`
    implements only `fit_transform`.
    r)   r„   r   )rl   r\   ra   r'   N)rˆ   ru   r
   rt   re   r—   r‰   )ra   re   rŠ   rÐ   ÚX_transs        r4   Ú'test_spectral_embedding_preserves_dtyperî   ±  s{   € ô$ 	
�‰�‹€AÜ	Ø °\ÐPQô
€Bð ×Ñ˜qÓ!€Gà�=‰=˜EÒ!Ð!Ð!Ø�=‰=×Ñ %Ò'Ð'Ð'Ø×Ñ×$Ñ$¨Ò-Ð-Ñ-r6   z7PyAMG is installed and we should not test for an error.c                  ó®   — t        ddd¬«      } d}t        j                  t        |¬«      5  | j	                  t
        «       d d d «       y # 1 sw Y   y xY w)Nr)   r„   rc   )rl   r\   ra   z>The eigen_solver was set to 'amg', but pyamg is not available.r¬   )r
   rx   r³   r´   rt   rˆ   )r~   r½   s     r4   Útest_error_pyamg_not_availablerð   Î  sP   € ô
 #ØØØô€Jð
 O€GÜ	�‰”z¨Ô	1ñ $Ø× Ñ ¤Ô#÷$÷ $ñ $ús   ¬AÁAÚsolver)rb   rc   r   rÔ   c                 óÒ  — |dk(  rt         st        j                  d«       t        ddddgddggd¬«      \  }}t	        |«      }t        j                  |«      |z
  }|d	k(  rt        nt        }|d	k(  rdnd
}|dk(  r ||«      }t        |¬«      }	| j                  t        |j                  |	«       t        |d|d¬«       |	j                  «        |	j                  \  }}
|
d   |k(  sJ ‚y
)z2Test that `eigen_tol="auto"` is resolved correctlyrc   zPyAMG is not available.r:   r   r<   r;   g{®Gáz„?)r$   r'   r%   r&   rb   N)Úside_effectr#   Úauto)r'   ra   Ú	eigen_tolr0   )Úpyamg_availablerx   Úskipr	   r   r,   r-   r   r   r   Úsetattrr   Ú__qualname__r   Úassert_calledÚ	call_args)Úmonkeypatchrñ   rÔ   rŠ   ræ   ÚDrˆ   Úsolver_funcÚdefault_valueÚmocked_solverÚkwargss              r4   Útest_spectral_eigen_tol_autor  Ý  sæ   € ð �‚�Ü�‰Ð-Ô.ÜØ A°°A°¸¸R¸Ð/AÈtô�D€A€qô 	˜1Ó€AÜ
�‰ˆq‹	�A‰€Aà! XÒ-•%´6€KØ 8Ò+‘A°€MØ�‚Ù˜!Óˆä [Ô1€Mà×ÑÔ+¨[×-EÑ-EÀ}ÔUä�q r¸È&ÕQØ×ÑÔ!à×'Ñ'�I€A€vØ�%‰=˜MÒ)Ð)Ñ)r6   )r   )r   )rØ   )NÚunittest.mockr   Únumpyr,   rx   Úscipyr   Úscipy.linalgr   Úscipy.sparse.linalgr   r   Úsklearn.clusterr   Úsklearn.datasetsr	   Úsklearn.manifoldr
   r   r   Ú$sklearn.manifold._spectral_embeddingr   r   Úsklearn.metricsr   r   Úsklearn.metrics.pairwiser   Úsklearn.neighborsr   Úsklearn.utils._testingr   r   Úsklearn.utils.extmathr   Úsklearn.utils.fixesr   r   r   r   r   r   rä   Úpyamgr   rö   ÚImportErrorÚmarkÚskipifÚskip_if_no_pyamgrI   r%   r$   ri   rË   Ú
n_featuresrˆ   rÎ   r5   Úparametrizer`   ÚparamÚfloat32Úfloat64r�   rŽ   r�   r¥   r¾   rÉ   rÒ   rÖ   rÝ   rè   rë   rî   rð   r  © r6   r4   ú<module>r     sþ  ðÝ ã Û Ý Ý ß -å "Ý 'ß WÑ W÷÷ MÝ /Ý .ß PÝ A÷õ õ ?ðÝ1à€Oð —;‘;×%Ñ%ØÐÐ Sð &ó Ð ð
 ˆ"�(‰(â!Ú!Ú!ðó€ð €	Ø Ÿ™Ñ €
ˆJÙØ °cÈô�€€;ó

ð ‡�×Ñ˜¨.Ó9ñ$5ó :ð$5ðV ‡�×ÑØàØØˆ�‰�UÐ"2Ô3ðóð ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;ò)Ró <óð)RðX ‡�×ÑÐ+¨dÐ-D°^Ð-DÓEØ‡�×ÑØàØØˆ�‰�UÐ"2Ô3ðóð ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;à02òEó <óó FðEò4/ð, ‡�×ÑÐ+¨dÐ-D°^Ð-DÓEòFó FðFð2 ‡�×ÑØÐÐ Sð ó ð ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;Ø‡�×Ñ˜¨.Ó9ò3+ó :ó <óð
3+ðl ‡�×ÑØÐÐ Sð ó ð ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;òMó <óðMó&
ó(9òB8ò8ò(.ð* ‡�×ÑØàØØˆ�‰�UÐ"2Ô3ðóð ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;ñ.ó <óð.ð( ‡�×ÑØØDð ó ñ$ó	ð$ð ‡�×Ñ˜Ò#>Ó?Ø‡�×Ñ˜¨.Ó9ñ*ó :ó @ñ*øð{ ò ØƒOðús   Á8O ÏO'Ï&O'