Ë
    âQ(h   ã                   ó˜   — d dl Zd dlmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ  G d„ d«      Zej                  j                  d„ «       Zy)	é    N)Úassert_allcloseÚassert_array_equalÚassert_equal)Údirected_hausdorff)Údistance)Úcheck_random_statec                   ó"  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zej                  j                  d
ddej                   j#                  d«      g«      d„ «       Zd„ Zej                  j                  ddgddg ej(                  d«      dfdgddgddfdgddgej                   j#                  d«      dfdgddgej                   j#                  d«      dfddgg d¢ddfddgg d¢ej                   j#                  d«      dfg«      d„ «       Zy)ÚTestHausdorffc                 óŒ  — t         j                  j                  d«       t         j                  j                  d«      t         j                  z  dz  }t        j                  ||t        j
                  d«      f«      }t        j                  |d   «      |d<   t        j                  |d   «      |d<   t        j                  ||t        j
                  d«      f«      }t        j                  |dd …df   «      dz  |dd …df<   t        j                  |dd …df   «      dz  |dd …df<   t        j                  |d	   «      d
z  |d	<   t        j                  |d   «      d
z  |d<   || _        || _	        t        j                  | j                  ddd¬«      | _        t        j                  | j                  ddd¬«      | _        y )NiÒ  éd   é   ).r   ).é   r   r   g       @©r   r   gffffff
@©r   r   é   é   ©Úaxisé   )ÚnpÚrandomÚseedÚpiÚcolumn_stackÚzerosÚcosÚsinÚpath_1Úpath_2ÚinsertÚ	path_1_4dÚ	path_2_4d)ÚselfÚrandom_anglesÚrandom_columnsÚrandom_columns_2s       ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/spatial/tests/test_hausdorff.pyÚsetup_methodzTestHausdorff.setup_method   s{  € Ü
�	‰	�‰�tÔÜŸ	™	×(Ñ(¨Ó-´·±Ñ5¸Ñ9ˆÜŸ™Ø˜M¬2¯8©8°C«=Ð9ó;ˆä!#§¡¨°vÑ(>Ó!?ˆ�vÑÜ!#§¡¨°vÑ(>Ó!?ˆ�vÑÜŸ?™?Ø˜M¬2¯8©8°C«=Ð9ó;Ðä"$§&¡&Ð)9¸!¹"¸a¸%Ñ)@Ó"AÀCÑ"GÐ˜™˜Q˜ÑÜ"$§&¡&Ð)9¸!¹"¸a¸%Ñ)@Ó"AÀCÑ"GÐ˜™˜Q˜Ñä!#§¡Ð(8¸Ñ(>Ó!?À#Ñ!EÐ˜ÑÜ!#§¡Ð(8¸Ñ(>Ó!?À#Ñ!EÐ˜ÑØ$ˆŒØ&ˆŒÜŸ™ 4§;¡;°°1¸1Ô=ˆŒÜŸ™ 4§;¡;°°2¸AÔ>ˆ�ó    c                 óž   — t        | j                  | j                  «      d   }t        | j                  | j                  «      d   }||k7  sJ ‚y )Nr   )r   r   r   )r#   ÚforwardÚreverses      r'   Útest_symmetryzTestHausdorff.test_symmetry!   sD   € ô % T§[¡[°$·+±+Ó>¸qÑAˆÜ$ T§[¡[°$·+±+Ó>¸qÑAˆØ˜'Ò!Ð!Ñ!r)   c                 óò   — t        | j                  | j                  «      d   }t        t	        j
                  t        j                  | j                  | j                  «      d¬«      «      }t        ||«       y )Nr   r   r   ©	r   r   r   Úmaxr   Úaminr   Úcdistr   ©r#   ÚactualÚexpecteds      r'   Ú#test_brute_force_comparison_forwardz1TestHausdorff.test_brute_force_comparison_forward)   óT   € ô $ D§K¡K°·±Ó=¸aÑ@ˆä”r—w‘wœxŸ~™~¨d¯k©k¸4¿;¹;ÓGØ$%ô'ó (ˆä˜ Õ)r)   c                 óò   — t        | j                  | j                  «      d   }t        t	        j
                  t        j                  | j                  | j                  «      d¬«      «      }t        ||«       y ©Nr   r   )	r   r   r   r0   r   r1   r   r2   r   r3   s      r'   Ú#test_brute_force_comparison_reversez1TestHausdorff.test_brute_force_comparison_reverse3   r7   r)   c                 ób   — t        | j                  | j                  «      d   }t        |d«       y )Nr   ç        )r   r   r   )r#   r4   s     r'   Útest_degenerate_casez"TestHausdorff.test_degenerate_case=   s'   € ô $ D§K¡K°·±Ó=¸aÑ@ˆÜ˜ Õ$r)   c                 ó*  — t        | j                  dd d…f   | j                  dd d…f   «      d   }t        t	        j
                  t        j                  | j                  dd d…f   | j                  dd d…f   «      d¬«      «      }t        ||«       y )N.r   r   r   r   r/   r3   s      r'   Útest_2d_data_forwardz"TestHausdorff.test_2d_data_forwardC   s”   € ô $ D§K¡K°°R°a°R°Ñ$8Ø$(§K¡K°°R°a°R°Ñ$8ó:Ø:;ñ=ˆä”r—w‘wœxŸ~™~¨d¯k©k¸#¸rÀ¸r¸'Ñ.BØ.2¯k©k¸#¸rÀ¸r¸'Ñ.Bó Dà$%ô'ó (ˆô 	˜ Õ)r)   c                 óò   — t        | j                  | j                  «      d   }t        t	        j
                  t        j                  | j                  | j                  «      d¬«      «      }t        ||«       y r9   )	r   r"   r!   r0   r   r1   r   r2   r   r3   s      r'   Útest_4d_data_reversez"TestHausdorff.test_4d_data_reverseM   sT   € ô $ D§N¡N°D·N±NÓCÀAÑFˆä”r—w‘wœxŸ~™~¨d¯n©n¸d¿n¹nÓMØ$%ô'ó (ˆä˜ Õ)r)   c                 óÈ   — t        j                  ddgddgddgddgddgg«      }t        j                  ddgddgdd	gd
dgg«      }t        ||«      dd  }d}t        ||«       y )Néÿÿÿÿiôÿÿÿr   r   r   é   r   é   r   é
   é	   )r   r   )r   Úarrayr   r   )r#   Úpath_simple_1Úpath_simple_2r4   r5   s        r'   Útest_indiceszTestHausdorff.test_indicesV   sz   € ô Ÿ™ 2 c (¨A¨a¨5°1°Q°%¸!¸A¸ÀÀ1ÀÐ!FÓGˆÜŸ™ 1 Q %¨!¨A¨°°3°¸"¸Q¸Ð!@ÓAˆÜ# M°=ÓAÀ!À"ÐEˆØˆÜ˜6 8Õ,r)   c                 óÈ   — t        d «      }|j                  «       }t        | j                  | j                  «       t        d «      }|j                  «       }t        ||«       y ©N©r   Ú	get_stater   r   r   r   )r#   ÚrsÚold_global_stateÚrs2Únew_global_states        r'   Útest_random_statezTestHausdorff.test_random_state_   sN   € ô   Ó%ˆØŸ<™<›>ÐÜ˜4Ÿ;™;¨¯©Ô4Ü  Ó&ˆØŸ=™=›?ÐÜÐ%Ð'7Õ8r)   r   NiÏE©é±   c                 óÊ   — t        d «      }|j                  «       }t        | j                  | j                  |«       t        d «      }|j                  «       }t        ||«       y rM   rN   )r#   r   rP   rQ   rR   rS   s         r'   Útest_random_state_None_intz(TestHausdorff.test_random_state_None_inti   sP   € ô   Ó%ˆØŸ<™<›>ÐÜ˜4Ÿ;™;¨¯©°TÔ:Ü  Ó&ˆØŸ=™=›?ÐÜÐ%Ð'7Õ8r)   c                 ó  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }d}t        j                  t
        |¬«      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nl	   »"{`ÍR÷!­Ž ©r   r   )r   r   z'need to have the same number of columns)Úmatch)r   r   Údefault_rngÚpytestÚraisesÚ
ValueErrorr   )r#   ÚrngÚAÚBÚmsgs        r'   Útest_invalid_dimensionsz%TestHausdorff.test_invalid_dimensionst   sg   € ô �i‰i×#Ñ#Ð$KÓLˆØ�J‰J�vÓˆØ�J‰J�vÓˆØ8ˆÜ�]‰]œ:¨SÔ1ñ 	%Ü˜q !Ô$÷	%÷ 	%ñ 	%ús   ÁA5Á5A>zA, B, seed, expectedr   r   r   )r<   r   r   r   ©éûÿÿÿr   )r   r   rd   é*- )r<   r   r   )r<   r   r   c                 óX  — t        |||¬«      }t        |d   |d   «       |}t        |d«      r |j                  j                  j
                  }|dk(  s|dk7  r|dd  |dd  k(  sJ ‚t        |t        j                  j                  «      s!t        |||¬«      }t        |d   |d   «       y y )N)ÚuÚvr   r   Úbit_generatorr   rf   )rh   ri   r_   )
r   r   Úhasattrrj   Ú	_seed_seqÚentropyÚ
isinstancer   r   ÚRandomState)r#   r`   ra   r   r5   Únum_parallel_threadsr4   Ústarting_seeds           r'   Útest_subsetszTestHausdorff.test_subsets   s­   € ôL $ a¨1°4Ô8ˆä˜˜q™	 8¨A¡;Ô/ØˆÜ�4˜Ô)Ø ×.Ñ.×8Ñ8×@Ñ@ˆMà 1Ò$¨¸Ò(>Ø˜!˜"�: ¨!¨" Ò-Ð-Ð-ä˜$¤§	¡	× 5Ñ 5Ô6ä'¨!¨q°dÔ;ˆFÜ˜F 1™I x°¡{Õ3ð 7r)   )Ú__name__Ú
__module__Ú__qualname__r(   r-   r6   r:   r=   r?   rA   rK   rT   r\   ÚmarkÚparametrizer   r   r[   rW   rc   Úint64rr   © r)   r'   r
   r
      sk  „ ò?ò&"ò*ò*ò%ò*ò*ò-ò9ð ‡[�[×Ñ˜V d¨H°b·i±i×6KÑ6KÈCÓ6PÐ%QÓRñ9ó Sð9ò%ð ‡[�[×ÑÐ3à
ˆØ
�ˆØ	ˆ�‰�!‹Ø	ð	ð ˆØ
�ˆØ	
Ø	ð	ð
 ˆØ
�ˆØ	�‰×	Ñ	˜qÓ	!Ø	ð	ð ˆØ
�ˆØ	�‰×	Ñ	˜qÓ	!Ø	ð	ð
 �5Ð	Ú	 Ø	ð 
ð	ð �5Ð	Ú	 Ø	�‰×	Ñ	˜uÓ	%ð 
ð	ð9#6ó #ñH4óI#ñH4r)   r
   c                  óœ  — 	 dd l }  j	                  «       j
                  dk  rt        j                  d«       t        d«      }t        j                  |df¬«      }t        j                  d¬«      }d	d	g||d
z
  <   t        ||¬«      }t        |d   d«       t        |d
   |d
z
  «       y # t        $ r t        j                  d«       Y ŒÄw xY w)Nr   z)psutil required to check available memoryl       P z.insufficient memory available to run this testg   ÀZæAr   )ÚshaperY   r   r   )rh   ri   gÀ
 ÆH@)ÚpsutilÚModuleNotFoundErrorr\   ÚskipÚvirtual_memoryÚ	availableÚintr   r   r   r   )r|   ÚsizeÚarr1Úarr2r4   s        r'   Útest_massive_arr_overflowr…   µ   s¸   € ð
AÛð ×ÑÓ×(Ñ(¨8Ò3ä�‰ÐDÔEÜˆs‹8€DÜ�8‰8˜4 ˜)Ô$€DÜ�8‰8˜&Ô!€DØ˜�V€Dˆ�‰�NÜ $¨$Ô/€FÜ�F˜1‘IÐ1Ô2Ü�F˜1‘I˜t a™xÕ(øô ò AÜ�‰Ð?Ö@ðAús   ‚B* Â*CÃ
C)Únumpyr   Únumpy.testingr   r   r   r\   Úscipy.spatial.distancer   Úscipy.spatialr   Úscipy._lib._utilr   r
   rv   Úxslowr…   ry   r)   r'   ú<module>rŒ      sK   ðÛ ÷)ñ )ó Ý 5Ý "Ý /÷g4ñ g4ðT ‡�×Ññ)ó ñ)r)   