Ë
    âQ(h/)  ã                   óF  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZm	Z	 d dl
mZmZmZmZmZmZ d dlmZ d dlmZ d dlZd dlmZ d„ Zd„ Zd	„ Zd
„ Zej8                  j:                  ej8                  j=                  d«      d„ «       «       Zej8                  jA                  e jB                  jE                  d«      xr)  ejF                  ejH                  «      jJ                  dk\   d¬«       G d„ d«      «       Z&ej8                  jO                  d¬«      d„ «       Z(d„ Z)d„ Z*y)é    N)Úassert_equalÚassert_Úassert_allclose)Ú_sparsetoolsÚ
coo_matrixÚ
csr_matrixÚ
csc_matrixÚ
bsr_matrixÚ
dia_matrix)Úsupported_dtypes)Úcheck_free_memory)Úraisesc                 ó   — | dz   dz  dz
  S )z6
    Wrap an integer to the interval [-128, 127].
    é€   é   © )Úns    úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/sparse/tests/test_sparsetools.pyÚint_to_int8r      s   € ð �‰G�s‰?˜SÑ Ð ó    c                  ó@   — t        t        t        j                  «       y ©N)Úassert_raisesÚMemoryErrorr   Útest_throw_errorr   r   r   Útest_exceptionr      s   € Ü”+œ|×<Ñ<Õ=r   c                  ó¤  ‡‡‡‡	— d} dŠ	dŠt        t        j                  ‰‰g«      «      Šg Š G ˆˆˆˆ	fd„dt        j                  «      }t        | «      D �cg c]	  } |«       ‘Œ }}|D ]  }|j                  «        Œ |D ]  }|j                  «        Œ ‰D ]1  }t        t        j                  |j                  «       dk(  «      «       Œ3 y c c}w )Né
   éd   é   c                   ó   •— e Zd Zˆ ˆˆˆfd„Zy)útest_threads.<locals>.Workerc                 óZ  •— ‰j                  «       }t        ‰«      D ]{  }t        j                  ‰‰‰j                  ‰j
                  ‰j                  ‰j                  ‰j
                  ‰j                  |j                  |j
                  |j                  «       Œ} ‰j                  |«       y r   )ÚcopyÚranger   Úcsr_plus_csrÚindptrÚindicesÚdataÚappend)ÚselfÚbÚjÚaÚbresr   Úniters      €€€€r   Úrunz test_threads.<locals>.Worker.run(   s|   ø€ Ø—‘“ˆAÜ˜5“\ò G�Ü×)Ñ)¨!¨QØ*+¯(©(°A·I±I¸q¿v¹vØ*+¯(©(°A·I±I¸q¿v¹vØ*+¯(©(°A·I±I¸q¿v¹võGðGð
 �K‰K˜�Nr   N)Ú__name__Ú
__module__Ú__qualname__r1   )r.   r/   r   r0   s   €€€€r   ÚWorkerr"   '   s   ø„ ÷	ð 	r   r5   é   )r   ÚnpÚonesÚ	threadingÚThreadr%   ÚstartÚjoinr   ÚallÚtoarray)
Únthreadsr5   Ú_ÚthreadsÚthreadr,   r.   r/   r   r0   s
         @@@@r   Útest_threadsrC      sÃ   û€ ð €HØ€Eà
€AÜ”2—7‘7˜A˜q˜6“?Ó#€AØ€D÷ñ ”×!Ñ!ô ô "' x£Ö1˜A‰v�xÐ1€GÐ1Øò ˆØ�‰�ðàò ˆØ�‰�ðð ò *ˆÜ”—‘�q—y‘y“{ aÑ'Ó(Õ)ñ*ùò 2s   ÁCc                  óì   — t         D ]k  } t        j                  ddgddgg«      j                  | «      }t	        || ¬«      }t        |j                  d«      j                  «       |d d …d d…f   «       Œm y )Né   r6   é   é   ©Údtyper   )r   r7   ÚarrayÚastyper   r   Úgetcolr>   )rI   Úadr.   s      r   Ú!test_regression_std_vector_dtypesrN   ;   sn   € ô "ò 7ˆÜ�X‰X˜˜1�v  1˜vÐ&Ó'×.Ñ.¨uÓ5ˆÜ�r Ô'ˆô 	�Q—X‘X˜a“[×(Ñ(Ó*¨Bªq°"°1°"¨u©IÕ6ñ7r   z!Can't create large array for testc                  óÔ  — t        j                  t         j                  «      j                  dz   } t	        d| z  dz  dz   «       t        j
                  | t         j                  ¬«      }t        j
                  | t         j                  ¬«      }t        j
                  | t         j                  ¬«      }d|d<   t        |||ffdd	¬
«      }|j                  «       }t        |dgg«       y )NrE   é	   ç    €„.Ag      à?rH   rG   éÿÿÿÿ)rE   rE   F)Úshaper$   )
r7   ÚiinfoÚint32Úmaxr   ÚzerosÚint8r   r>   r   )ÚnnzÚrowÚcolr)   ÚsÚds         r   Útest_nnz_overflowr^   F   s¯   € ô
 �(‰(”2—8‘8Ó
×
 Ñ
  1Ñ
$€Cä�y CÑ'¨#Ñ-°Ñ3Ô4ô �(‰(�3œbŸh™hÔ
'€CÜ
�(‰(�3œbŸh™hÔ
'€CÜ�8‰8�CœrŸw™wÔ'€DØ€Dˆ�HÜ�D˜3 ˜*Ð%¨V¸%Ô@€Aà	�	‰	‹€Aä�A˜˜�uÕr   Úlinuxé   ztest requires 64-bit Linux)Úreasonc            	       óš  — e Zd ZdZdZd„ Zd„ Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Z ej                  dej                  j                  ¬	«       ej                  d
ej                  j                  ¬	«      ddd ej                  dej                  j                  ¬	«      gZej                  j                  ej                  j!                  de«      d„ «       «       Zej                  j                  ej                  j!                  de«      d„ «       «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestInt32Overflowa  
    Some of the sparsetools routines use dense 2D matrices whose
    total size is not bounded by the nnz of the sparse matrix. These
    routines used to suffer from int32 wraparounds; here, we try to
    check that the wraparounds don't occur any more.
    iPÃ  c                 ó0  — | j                   dz  t        j                  t        j                  «      j                  kD  sJ ‚	 t        t        j                  j                  dd«      «      }t        d|z  «       y # t        $ r t        j                  }Y Œ*w xY w)Nr6   ÚPYTEST_XDIST_WORKER_COUNTÚ1i¸  )r   r7   rT   rU   rV   ÚintÚosÚenvironÚgetÚ
ValueErrorÚinfr   )r+   Úparallel_counts     r   Úsetup_methodzTestInt32Overflow.setup_methodi   ss   € Ø�v‰v�q‰yœ2Ÿ8™8¤B§H¡HÓ-×1Ñ1Ò1Ð1Ð1ð	$Ü ¤§¡§¡Ð0KÈSÓ!QÓRˆNô 	˜$ Ñ/Õ0øô ò 	$ÜŸV™VŠNð	$ús   Á)A9 Á9BÂBc                 ó,   — t        j                  «        y r   )ÚgcÚcollect)r+   s    r   Úteardown_methodz!TestInt32Overflow.teardown_methodu   s   € Ü
�
‰
�r   c                 óv  — | j                   }t        j                  d|dz
  g«      }t        j                  d|dz
  g«      }t        j                  ddgt        j                  ¬«      }t	        |||ff«      }|j                  «       }t        |d   d«       t        |d   d«       ~t        j                  «        y ©Nr   rE   r6   rH   ©r   r   )rR   rR   )	r   r7   rJ   rX   r   Útodenser   rp   rq   )r+   r   Úir-   r)   ÚmÚrs          r   Útest_coo_todensez"TestInt32Overflow.test_coo_todensex   s–   € ð
 �F‰Fˆä�H‰H�a˜˜1™�XÓˆÜ�H‰H�a˜˜1™�XÓˆÜ�x‰x˜˜A˜¤b§g¡gÔ.ˆÜ˜˜q !˜f�~Ó&ˆà�I‰I‹KˆÜ�Q�s‘V˜QÔÜ�Q�u‘X˜qÔ!ØÜ
�
‰
�r   c                 ó,  — | j                   }t        j                  d|dz
  g«      }t        j                  d|dz
  g«      }t        j                  ddgt        j                  ¬«      }t	        |||ff«      }t        j
                  ||ft        j                  ¬«      }t        t        t        fD ]N  } ||«      }|j                  |«      }	t        |	d   d«       t        |	d   d«       ~	t        j                  «        ŒP ~t        j                  «        y rt   )r   r7   rJ   rX   r   r8   r   r	   r
   Údotr   rp   rq   )
r+   r   rw   r-   r)   rx   r,   ÚsptypeÚm2ry   s
             r   Útest_matvecszTestInt32Overflow.test_matvecsŠ   sÝ   € ð �F‰Fˆä�H‰H�a˜˜1™�XÓˆÜ�H‰H�a˜˜1™�XÓˆÜ�x‰x˜˜A˜¤b§g¡gÔ.ˆÜ˜˜q !˜f�~Ó&ˆä�G‰G�Q˜�F¤"§'¡'Ô*ˆÜ!¤:¬zÐ:ò 	ˆFÙ˜“ˆBØ—‘�q“	ˆAÜ˜˜3™ Ô#Ü˜˜5™ 1Ô%ØÜ�J‰J�Lð	ð Ü
�
‰
�r   c                 óž  — | j                   }t        j                  ||ft        j                  ¬«      }t        j                  |«      }t        ||f||f¬«      }t        j                  |j                  d   t        j                  ¬«      }|j                  |«      }t        |d   t        |«      «       ~~~~~t        j                  «        y )NrH   )rS   rE   r   )r   r7   r8   rX   Úaranger   rS   r|   r   r   rp   rq   )r+   r   r)   Úoffsetsrx   Úvry   s          r   Útest_dia_matvecz!TestInt32Overflow.test_dia_matvec    s•   € ð �F‰FˆÜ�w‰w˜˜1�v¤R§W¡WÔ-ˆÜ—)‘)˜A“,ˆÜ˜˜g�¨q°!¨fÔ5ˆÜ�G‰G�A—G‘G˜A‘J¤b§g¡gÔ.ˆØ�E‰E�!‹HˆÜ�Q�q‘Tœ; q›>Ô*Ø�'˜1˜a Ü
�
‰
�r   Úmatmat)ÚmarksÚmatvecsÚmatvecÚdiagonalÚsort_indicesÚ	transposeÚopc                 ó¾   ‡ — ˆ fd„}t        j                  «        	  t        ‰ d|z   «      |«       t        j                  «        y # t        j                  «        w xY w)Nc                  ó6  •— ‰j                   } t        j                  d| | ft        j                  ¬«      }t        j                  ddgt        j
                  ¬«      }t        j                  dgt        j
                  ¬«      }t        |||f| | fd¬«      }~~~|S ©NrE   rH   r   F)Ú	blocksizer$   )r   r7   r8   rX   rJ   rU   r
   ©r   r)   r'   r(   rx   r+   s        €r   Ú
get_matrixz6TestInt32Overflow.test_bsr_1_block.<locals>.get_matrix»   sy   ø€ Ø—‘ˆAÜ—7‘7˜A˜q !˜9¬B¯G©GÔ4ˆDÜ—X‘X˜q !˜f¬B¯H©HÔ5ˆFÜ—h‘h ˜s¬"¯(©(Ô3ˆGÜ˜D '¨6Ð2¸qÀ!¸fÈ5ÔQˆAØ�f˜gØˆHr   Ú_check_bsr_©rp   rq   Úgetattr©r+   rŒ   r’   s   `  r   Útest_bsr_1_blockz"TestInt32Overflow.test_bsr_1_block´   sA   ø€ ô	ô 	�
‰
Œð	Ø-ŒG�D˜-¨"Ñ,Ó-¨jÔ9ä�J‰J�LøŒB�J‰J�Lúó   œA ÁAc                 ó¾   ‡ — ˆ fd„}t        j                  «        	  t        ‰ d|z   «      |«       t        j                  «        y # t        j                  «        w xY w)Nc                  ó4  •— ‰j                   } t        j                  | | dft        j                  ¬«      }t        j                  d| gt        j
                  ¬«      }t        j                  | t        j
                  ¬«      }t        |||f| dfd¬«      }~~~|S r�   )r   r7   r8   rX   rJ   rU   r�   r
   r‘   s        €r   r’   z6TestInt32Overflow.test_bsr_n_block.<locals>.get_matrixÒ   sw   ø€ Ø—‘ˆAÜ—7‘7˜A˜q !˜9¬B¯G©GÔ4ˆDÜ—X‘X˜q !˜f¬B¯H©HÔ5ˆFÜ—i‘i ¬¯©Ô2ˆGÜ˜D '¨6Ð2¸qÀ!¸fÈ5ÔQˆAØ�f˜gØˆHr   r“   r”   r–   s   `  r   Útest_bsr_n_blockz"TestInt32Overflow.test_bsr_n_blockÊ   sA   ø€ ô	ô 	�
‰
Œð	Ø-ŒG�D˜-¨"Ñ,Ó-¨jÔ9ä�J‰J�LøŒB�J‰J�Lúr˜   c                 óÆ   —  |«       }| j                   }|j                  t        j                  |dft        j                  ¬«      «      }t        |d   t        |«      «       y )Nr6   rH   ru   ©r   r|   r7   r8   rX   r   r   ©r+   rx   r   ry   s       r   Ú_check_bsr_matvecsz$TestInt32Overflow._check_bsr_matvecsá   sG   € Ù‹CˆØ�F‰Fˆð �E‰E”"—'‘'˜1˜a˜&¬¯©Ô0Ó1ˆÜ�Q�t‘Wœk¨!›nÕ-r   c                 óÄ   —  |«       }| j                   }|j                  t        j                  |ft        j                  ¬«      «      }t        |d   t        |«      «       y )NrH   r   r�   rž   s       r   Ú_check_bsr_matvecz#TestInt32Overflow._check_bsr_matvecé   sE   € Ù‹CˆØ�F‰Fˆð �E‰E”"—'‘'˜1˜$¤b§g¡gÔ.Ó/ˆÜ�Q�q‘Tœ; q›>Õ*r   c                 óˆ   —  |«       }| j                   }|j                  «       }t        |t        j                  |«      «       y r   )r   r‰   r   r7   r8   rž   s       r   Ú_check_bsr_diagonalz%TestInt32Overflow._check_bsr_diagonalñ   s1   € Ù‹CˆØ�F‰Fˆð �J‰J‹LˆÜ�QœŸ™ ›
Õ#r   c                 ó2   —  |«       }|j                  «        y r   )rŠ   ©r+   rx   s     r   Ú_check_bsr_sort_indicesz)TestInt32Overflow._check_bsr_sort_indicesù   s   € á‹CˆØ	�‰Õr   c                 ó2   —  |«       }|j                  «        y r   )r‹   r¥   s     r   Ú_check_bsr_transposez&TestInt32Overflow._check_bsr_transposeþ   s   € á‹CˆØ	�‰�r   c                 ót  —  |«       }| j                   }t        t        j                  |dft        j                  ¬«      |j
                  d   df¬«      }|j                  |«       ~t        t        j                  d|ft        j                  ¬«      d|j
                  d   f¬«      }|j                  |«       y )Nr6   rH   rE   )r�   r   )r   r
   r7   r8   rX   r�   r|   )r+   rx   r   r~   s       r   Ú_check_bsr_matmatz#TestInt32Overflow._check_bsr_matmat  s‰   € Ù‹CˆØ�F‰Fˆô œŸ™  A ¬b¯g©gÔ6À1Ç;Á;ÈqÁ>ÐSTÐBUÔVˆØ	�‰ˆbŒ	Øô œŸ™  A ¬b¯g©gÔ6À1ÀaÇkÁkÐRSÁnÐBUÔVˆØ
�‰ˆq�	r   N)r2   r3   r4   Ú__doc__r   rn   rr   rz   ÚpytestÚmarkÚslowr   r„   ÚparamÚxslowÚ_bsr_opsÚparametrizer—   r›   rŸ   r¡   r£   r¦   r¨   rª   r   r   r   rc   rc   [   sF  „ ñ
ð 	€Aò
1òòð$ ‡[�[×Ññó ðð* ‡[�[×Ññ
ó ð
ð �—‘˜X¨V¯[©[×->Ñ->Ô?Ø�—‘˜Y¨f¯k©k×.?Ñ.?Ô@ØØØØ�—‘˜[°·±×0AÑ0AÔBðD€Hð ‡[�[×ÑØ‡[�[×Ñ˜T 8Ó,ñó -ó ðð( ‡[�[×ÑØ‡[�[×Ñ˜T 8Ó,ñó -ó ðò*.ò+ò$òò
ó
r   rc   z/64-bit indices in sparse matrices not availablec                  óê  — d} | dz  t        j                  t         j                  «      j                  kD  sJ ‚t	        | dz  dz  dz  «       t        j
                  | ft         j                  ¬«      }t        j                  | dz   t         j                  ¬«      }t        j                  | t         j                  ¬«      }t        |||f«      }|j                  }t        t        |j                  |«       y )Nl   4s	j r6   é   rF   rQ   rH   rE   )r7   rT   Úint64rV   r   r8   rX   r�   rW   r   ÚTr   ÚRuntimeErrorr|   )r   r)   r'   r(   r.   r,   s         r   Útest_csr_matmat_int64_overflowr¸     s²   € à€AØˆa‰4”"—(‘(œ2Ÿ8™8Ó$×(Ñ(Ò(Ð(Ð(ô �a˜7‘m aÑ'¨#Ñ-Ô.ô �7‰7�A�4œrŸw™wÔ'€DÜ�Y‰Y�q˜‘s¤"§(¡(Ô+€FÜ�h‰h�q¤§¡Ô)€GÜ�D˜' 6Ð*Ó+€AØ	�‰€Aä”, §¡ qÕ)r   c                  ó0  — t        t        j                  t        j                  dz  gddggt        ¬«      } t        j                  ddgt        ¬«      }t
        D �],  }t
        D �]  }d|›d|›d	�}t        j                  |t        j                  «      r | j                  «       j                  |«      }n)| j                  j                  «       j                  |«      }t        j                  |t        j                  «      r |j                  «       j                  |«      }nHt        j                  d
¬«      5  |j                  j                  «       j                  |«      }d d d «       |t        j                  k(  r|t        j                  k(  sht        j                  dt        j                  ¬«      }t        t        t         j"                  dd|j$                  |j&                  |j(                  |«	       t        j                  |t        j                  «      r$t        j                  |t        j                  «      rHt        j                  |t        j                  «      sŒt        j                  |t        j                  «      rht        j                  dt        j*                  ¬«      }t        t        t         j"                  dd|j$                  |j&                  |j(                  |«	       t        j                  dt        j,                  ||«      ¬«      }t!        j"                  dd|j$                  |j&                  |j(                  |«       t/        |t        j0                  |j3                  «       |«      |¬«       �Œ" �Œ/ y # 1 sw Y   �Œ+xY w)Ny              ð?rF   rG   rH   y      p@      ð?l        ú(z, ú)Úignore)Úinvalid)r6   r6   )Úerr_msg)r   r7   ÚpiÚcomplexrJ   r   Ú
issubdtypeÚcomplexfloatingr$   rK   ÚrealÚerrstateÚbool_rW   r   rk   r   Ú
csr_matvecr'   r(   r)   Úfloat64Úresult_typer   r|   r>   )Úa0Úb0Úa_dtypeÚb_dtypeÚmsgr.   r,   Úcs           r   Útest_upcastrÏ   #  sl  € Ü	”b—e‘eœRŸU™U 2™XÐ&¨¨A¨Ð/´wÔ	?€BÜ	�‰�6˜5�/¬Ô	1€Bä#ó  DˆÜ'ó 	DˆGØ�g�[  7 +¨QÐ/ˆCä�}‰}˜W¤b×&8Ñ&8Ô9Ø—G‘G“I×$Ñ$ WÓ-‘à—G‘G—L‘L“N×)Ñ)¨'Ó2�ä�}‰}˜W¤b×&8Ñ&8Ô9Ø—G‘G“I×$Ñ$ WÓ-‘ä—[‘[¨Ô2ñ 7ð Ÿ™Ÿ™›×-Ñ-¨gÓ6�A÷7ð
 œrŸx™xÒ'¨G´r·x±xÒ,?Ü—H‘H˜T¬¯©Ô2�Üœj¬,×*AÑ*AØ  A§H¡H¨a¯i©i¸¿¹ÀÀAôGô —‘˜w¬×(:Ñ(:Ô;Ü—]‘] 7¬B×,>Ñ,>Ô?Ü—]‘] 7¬B×,>Ñ,>Ô?Ü—‘˜w¬×(:Ñ(:Ô;Ü—H‘H˜T¬¯©Ô4�Üœj¬,×*AÑ*AØ  A§H¡H¨a¯i©i¸¿¹ÀÀAôGô —‘˜¤R§^¡^°G¸WÓ%EÔFˆAÜ×#Ñ# A q¨!¯(©(°A·I±I¸q¿v¹vÀqÈ!ÔLÜ˜AœrŸv™v a§i¡i£k°1Ó5¸s×Cò?	Dñ D÷7ñ 7ús   Ä8*NÎNc                  óH  — t        j                  d«      } g d¢}t        | j                  d«      |fd«      }t        | j                  d«      |fd«      }t        j                  d«      }t        |j                  |«      g d¢«       t        |j                  |«      g d¢«       y )N)rF   rG   )rR   r   rE   z<f8)rG   rG   z>f8rG   )rE   rF   é   é   )r7   r8   r   rK   r�   r   r|   )r]   r‚   r.   r,   rƒ   s        r   Útest_endiannessrÓ   J  sw   € Ü
�‰�‹€AÚ€Gä�A—H‘H˜U“O WÐ-¨vÓ6€AÜ�A—H‘H˜U“O WÐ-¨vÓ6€AÜ
�	‰	�!‹€Aä�A—E‘E˜!“HšlÔ+Ü�A—E‘E˜!“HšlÕ+r   )+Úsysrh   rp   r9   Únumpyr7   Únumpy.testingr   r   r   Úscipy.sparser   r   r   r	   r
   r   Úscipy.sparse._sputilsr   Úscipy._lib._testutilsr   r¬   r   r   r   r   rC   rN   r­   r®   Úxfail_on_32bitr^   ÚskipifÚplatformÚ
startswithrI   ÚintpÚitemsizerc   Úskipr¸   rÏ   rÓ   r   r   r   ú<module>rá      s  ðÛ 
Û 	Û 	Û ã ß @Ñ @÷2÷ 2å 2Ý 3ã Ý *ò!ò>ò*ò>7ð ‡�×ÑØ‡�×ÑÐ?Ó@ñó Aó ðð& ‡�×ÑØ	�‰×	 Ñ	  Ó	)Ò	M¨h¨b¯h©h°r·w±wÓ.?×.HÑ.HÈAÑ.MÐNØ'ð ó ÷oð oó	ðoðd ‡�×ÑÐJÐÓKñ*ó Lð*ò"$DóN	,r   