Ë
    ÏÍ:jì'  ã                   ó²  — d dl Z d dlZd dlmZ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Zd„ Zd„ Zd„ Zd	„ Zej,                  j/                  d
 e
g d¢g d¢g d¢g«      d df e
g d¢g d¢g d¢g«      ddf e
g d¢g d¢g d¢g«      ddf e
g d¢g d¢g d¢g«      d dfg«      d„ «       Zd„ Zej,                  j5                  d«      ej,                  j7                  d«      ej,                  j/                  de
eeeg«      d„ «       «       «       Zd„ Zej,                  j/                  de
eeeg«      d„ «       Zd„ Zej,                  j@                  d „ «       Z!y)!é    N)Úassert_array_almost_equalÚassert_Úassert_array_equal)Úcheck_free_memory)Ú
csr_matrixÚ
csc_matrixÚ	csr_arrayÚ	csc_arrayÚhstack)Úsparsec                 óŽ   — || |f   }|| |f   }t        ||j                  «       d   «       t        t        |«      t        u «       y )Nr   )r   Útoarrayr   Útyper   )ÚiÚslÚXÚXcsrÚnp_sliceÚ	csr_slices         úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/sparse/tests/test_csr.pyÚ_check_csr_rowslicer   
   sE   € Ø��B�‰x€HØ�Q˜�U‘€IÜ˜h¨	×(9Ñ(9Ó(;¸AÑ(>Ô?ÜŒD�‹OœzÐ)Õ*ó    c                  ó\  — d} t         j                  j                  d«       t         j                  j                  | | f«      }d||dkD  <   t        |«      }t	        d d d «      t	        d d d«      t	        ddd«      t	        ddd«      g}t        | «      D ]  }|D ]  }t        ||||«       Œ Œ y )Né
   r   çffffffæ?éÿÿÿÿé   éþÿÿÿé   )ÚnpÚrandomÚseedr   ÚsliceÚranger   )ÚNr   r   Úslicesr   r   s         r   Útest_csr_rowslicer'      s­   € Ø
€AÜ‡I�I‡N�N�1ÔÜ
�	‰	×Ñ˜!˜Q˜Ó €AØ€A€aˆ#�g�JÜ�a‹=€Dä�D˜$ Ó%Ü�D˜$ Ó#Ü�A�r˜1‹oÜ�B˜˜2Óð €Fô
 �1‹Xò 0ˆØò 	0ˆBÜ  2 q¨$Õ/ñ	0ñ0r   c                  ót  — d} t         j                  j                  d«       t         j                  j                  | | f«      }d||dkD  <   t        |«      }t	        | «      D ]U  }|||dz   …d d …f   }|j                  |«      }t        ||j                  «       «       t        t        |«      t        u «       ŒW y ©Nr   r   r   r   )
r    r!   r"   r   r$   Úgetrowr   r   r   r   )r%   r   r   r   Úarr_rowÚcsr_rows         r   Útest_csr_getrowr-   "   sœ   € Ø
€AÜ‡I�I‡N�N�1ÔÜ
�	‰	×Ñ˜!˜Q˜Ó €AØ€A€aˆ#�g�JÜ�a‹=€Dä�1‹Xò -ˆØ�A�a˜!‘e�GšQ�J‘-ˆØ—+‘+˜a“.ˆä! '¨7¯?©?Ó+<Ô=Ü”�W“¤Ð+Õ,ñ-r   c                  ót  — d} t         j                  j                  d«       t         j                  j                  | | f«      }d||dkD  <   t        |«      }t	        | «      D ]U  }|d d …||dz   …f   }|j                  |«      }t        ||j                  «       «       t        t        |«      t        u «       ŒW y r)   )
r    r!   r"   r   r$   Úgetcolr   r   r   r   )r%   r   r   r   Úarr_colÚcsr_cols         r   Útest_csr_getcolr2   1   sœ   € Ø
€AÜ‡I�I‡N�N�1ÔÜ
�	‰	×Ñ˜!˜Q˜Ó €AØ€A€aˆ#�g�JÜ�a‹=€Dä�1‹Xò -ˆØ’A�q˜˜Q™�w�J‘-ˆØ—+‘+˜a“.ˆä! '¨7¯?©?Ó+<Ô=Ü”�W“¤Ð+Õ,ñ-r   z"matrix_input, axis, expected_shape)r   r   r   r   )r   r   r   r   )r   r   é   r   )r   é   r   )r3   r   Úboth)r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r3   r   )r   é   c                 ó4  — | j                  «       j                  d   dz
  }|}|dz
  }|dk(  rG| ||…d d …f   j                  «       j                  }| ||…d d …f   j                  «       j                  }n—|dk(  rG| d d …||…f   j                  «       j                  }| d d …||…f   j                  «       j                  }nK|dk(  rF| ||…||…f   j                  «       j                  }| ||…||…f   j                  «       j                  }|k(  sJ ‚|k(  sJ ‚y )Nr   r   r5   )r   Úshape)Úmatrix_inputÚaxisÚexpected_shapeÚslice_1Úslice_2Úslice_3Úactual_shape_1Úactual_shape_2s           r   Útest_csr_empty_slicesrA   ?   s5  € ð& ×"Ñ"Ó$×*Ñ*¨1Ñ-°Ñ1€GØ€GØ˜‰k€Gàˆq‚yØ% g¨g o²qÐ&8Ñ9×AÑAÓC×IÑIˆØ% g¨g o²qÐ&8Ñ9×AÑAÓC×IÑI‰Ø	�ŠØ%¢a¨°¨Ð&8Ñ9×AÑAÓC×IÑIˆØ%¢a¨°¨Ð&8Ñ9×AÑAÓC×IÑI‰Ø	�ŠØ% g¨g o°w¸w°Ð&FÑG×OÑOÓQ×WÑWˆØ% g¨g o°w¸w°Ð&FÑG×OÑOÓQ×WÑWˆà˜^Ò+Ð+Ð+Ø˜^Ò+Ð+Ñ+r   c                  ó   — t        g d¢g d¢g d¢g«      } g d¢}t        j                  |«      }g d¢g d¢g d¢g}t        j                  |«      }g d¢g d¢f}t        j                  |d   «      t        j                  |d   «      f}| |   j                  «       }| |   j                  «       }| |   }	| |   }
| |   }| |   }||k(  j	                  «       sJ ‚|	|
k(  j	                  «       sJ ‚||k(  j	                  «       sJ ‚y )N©r   r   r   )r3   r4   r6   )é   é   é   )FTFr   r   )r   r    Úarrayr   Úall)ÚdataÚlist_indices1Úarray_indices1Úlist_indices2Úarray_indices2Úlist_indices3Úarray_indices3Úslice_list1Úslice_array1Úslice_list2Úslice_array2Úslice_list3Úslice_array3s                r   Útest_csr_bool_indexingrV   d   s  € Ü’y¢)ªYÐ7Ó8€DÚ(€MÜ—X‘X˜mÓ,€NÚ)Ò+?ÒAUÐV€MÜ—X‘X˜mÓ,€NÚ)Ò+?Ð@€MÜ—h‘h˜}¨QÑ/Ó0´"·(±(¸=ÈÑ;KÓ2LÐM€NØ�}Ñ%×-Ñ-Ó/€KØ˜Ñ'×/Ñ/Ó1€LØ�}Ñ%€KØ˜Ñ'€LØ�}Ñ%€KØ˜Ñ'€LØ˜<Ñ'×,Ñ,Ô.Ð.Ð.Ø˜<Ñ'×,Ñ,Ô.Ð.Ð.Ø˜<Ñ'×,Ñ,Ô.Ð.Ñ.r   z!Can't create large array for testr   Úclsc                 óØ   — t        j                  d«      }|j                  d«      } | d«      }|||f   j                  dk(  sJ ‚|||j                  dd«      f   j                  dk(  sJ ‚y )Né † )rY   r   )rY   rY   r   r   r   )r    ÚarangeÚreshapeÚnnz)rW   ÚJÚIÚSs       r   Ú6test_fancy_indexing_broadcasts_without_making_dense_2dr`   w   sn   € ô
 	�	‰	�'Ó€AØ	�	‰	�,Ó€AÙÐÓ€AàˆQ�ˆT‰7�;‰;˜!ÒÐÐØˆQ�—	‘	˜!˜RÓ Ð Ñ!×%Ñ%¨Ò*Ð*Ñ*r   c                  óþ  — t        j                  t         j                  «      j                  } dg}dg}| dz
  }d}|dz
  g}|dz
  g}t	        |||ff«      }t	        |||ff«      }t        |dz
  |dz
  «      | k  sJ ‚|j
                  j                  |j                  j                  cxk(  rt         j                  k(  sJ ‚ J ‚|j
                  j                  |j                  j                  cxk(  rt         j                  k(  sJ ‚ J ‚t        ||gd¬«      }	|	j
                  j                  «       ||z   dz
  k(  sJ ‚||z   dz
  | kD  sJ ‚|	j
                  j                  |	j                  j                  cxk(  rt         j                  k(  sJ ‚ J ‚t	        |j                  «      }
t	        |j                  «      }t        |
|gd¬«      }|j                  |	j                  k(  sJ ‚|j
                  j                  t         j                  k(  sJ ‚| |z
  dz
  g}t	        |||ff«      }t        ||gd¬«      }|j
                  j                  t         j                  k(  sJ ‚|j
                  j                  «       | dz
  k(  sJ ‚y)z¯
    Tests if hstack properly promotes to indices and indptr arrays to np.int64
    when using np.int32 during concatenation would result in either array
    overflowing.
    g      ð?r   r   r3   Úcsr)ÚformatN)r    ÚiinfoÚint32Úmaxr   ÚindicesÚdtypeÚindptrr   Úint64r8   )Ú	max_int32rI   ÚrowÚmax_indices_1Úmax_indices_2Úcol_1Úcol_2ÚX_1ÚX_2ÚX_hsÚ	X_1_emptyÚ	X_2_emptyÚ
X_hs_emptyÚcol_3ÚX_3ÚX_hs_32s                   r   Útest_csr_hstack_int64rz   „   sT  € ô —‘œŸ™Ó"×&Ñ&€Ið ˆ5€DØˆ#€Cà ‘M€MØ€Mð ˜QÑÐ€EØ˜QÑÐ€Eä
�d˜S %˜LÐ)Ó
*€CÜ
�d˜S %˜LÐ)Ó
*€Cäˆ}˜qÑ  -°!Ñ"3Ó4°yÒ@Ð@Ð@Ø�;‰;×Ñ §
¡
× 0Ñ 0Ô<´B·H±HÒ<Ð<Ñ<Ð<Ð<Ø�;‰;×Ñ §
¡
× 0Ñ 0Ô<´B·H±HÒ<Ð<Ñ<Ð<Ð<ô �3˜�* UÔ+€Dà�<‰<×ÑÓ °Ñ!>ÀÑ!BÒBÐBÐBØ˜=Ñ(¨1Ñ,¨yÒ8Ð8Ð8Ø�<‰<×Ñ §¡×!2Ñ!2Ô>´b·h±hÒ>Ð>Ñ>Ð>Ð>ô ˜3Ÿ9™9Ó%€IÜ˜3Ÿ9™9Ó%€IÜ˜ IÐ.°uÔ=€Jà×Ñ˜tŸz™zÒ)Ð)Ð)Ø×Ñ×#Ñ#¤r§x¡xÒ/Ð/Ð/ð ˜Ñ&¨Ñ*Ð+€EÜ
�d˜S %˜LÐ)Ó
*€CÜ�c˜3�Z¨Ô.€GØ�?‰?× Ñ ¤B§H¡HÒ,Ð,Ð,Ø�?‰?×ÑÓ  I°¡MÒ1Ð1Ñ1r   c                 óÄ  — t         j                  j                  d«      } | t        j                  dd|d¬«      «      }|j	                  «       }|j	                  «       }|j
                  j                  t         j                  «      |_        |j                  j                  t         j                  «      |_        |||fD ]ž  }t         j                  j                  |ddgd d …f   j                  «       |ddgd d …f   j                  «       «       t         j                  j                  |d d …ddgf   j                  «       |d d …ddgf   j                  «       «       Œ  y )Nr   é2   gš™™™™™¹?)Úrandom_stateÚdensityr   r   )r    r!   Údefault_rngr   Úcopyri   Úastyperj   rg   Útestingr   r   )rW   ÚrngÚbase_mtxÚindptr_64bitÚindices_64bitÚmtxs         r   Ú#test_mixed_index_dtype_int_indexingrˆ   »   s  € ô �)‰)×
Ñ
 Ó
"€CÙ”6—=‘=  R°cÀ3ÔGÓH€HØ—=‘=“?€LØ—M‘M“O€MØ"Ÿ/™/×0Ñ0´·±Ó:€LÔØ$×,Ñ,×3Ñ3´B·H±HÓ=€MÔà˜,¨Ð6ò 
ˆÜ
�
‰
×%Ñ%Ø��1�’q�‰M×!Ñ!Ó#Ø�a˜�VšQ�YÑ×'Ñ'Ó)ô	
ô 	�
‰
×%Ñ%Ø’�A�q�6�	‰N×"Ñ"Ó$Ø’Q˜˜A˜�YÑ×'Ñ'Ó)õ	
ñ
r   c                  ó0  — t        j                  g d¢«      } t        j                  dg«      }t        j                  d«      }t        | «      j	                  d«      }t        |«      j	                  d«      }t        |«      j	                  d«      }t        |«      j	                  d«      }t        |«      j	                  d«      }t        |j                  «       t        j                  | d«      «       t        |j                  «       t        j                  |d«      «       t        |j                  «       t        j                  |d«      «       t        |j                  «       t        j                  |d«      «       t        |j                  «       t        j                  |d«      «       t        j                  t        d	¬
«      5  t        g d¢g d¢g«      j	                  d¬«       d d d «       t        j                  t        d	¬
«      5  t        g d¢g«      j	                  d¬«       d d d «       t        j                  t        d	¬
«      5  t        g d¢«      j	                  d¬«       d d d «       y # 1 sw Y   Œ�xY w# 1 sw Y   ŒWxY w# 1 sw Y   y xY w)N)r   r   r   r3   )r   )r   r3   )r4   )r   r4   )r   )r4   r   zcannot be broadcast)Úmatch)r   r   r   )r3   r   r   )r   r   ©r8   rC   )r3   r   )r    rG   Úzerosr	   Ú_broadcast_tor   r   Úbroadcast_toÚpytestÚraisesÚ
ValueErrorr   )ÚaÚbÚeÚres_aÚres_bÚres_cÚres_dÚres_es           r   Útest_broadcast_torš   Ï   sÙ  € Ü
�‰’Ó€AÜ
�‰�!�‹€AÜ
�‰�‹€AÜ�a‹L×&Ñ& uÓ-€EÜ�a‹L×&Ñ& tÓ,€EÜ�a‹L×&Ñ& uÓ-€EÜ�a‹L×&Ñ& tÓ,€EÜ�a‹L×&Ñ& uÓ-€EÜ�u—}‘}“¬¯©¸¸5Ó(AÔBÜ�u—}‘}“¬¯©¸¸4Ó(@ÔAÜ�u—}‘}“¬¯©¸¸5Ó(AÔBÜ�u—}‘}“¬¯©¸¸4Ó(@ÔAÜ�u—}‘}“¬¯©¸¸5Ó(AÔBä	�‰”zÐ)>Ô	?ñ GÜ’IšyÐ)Ó*×8Ñ8¸vÐ8ÔF÷Gô 
�‰”zÐ)>Ô	?ñ <Ü’I�;Ó×-Ñ-°FÐ-Ô;÷<ô 
�‰”zÐ)>Ô	?ñ 9Ü’)Ó×*Ñ*°Ð*Ô8÷9ð 9÷Gð Gú÷<ð <ú÷9ð 9ús$   Ç"I4ÈJ ÉJÉ4I=Ê J	ÊJc                  ó^  ‡	‡
— t        d«       ˆ	ˆ
fd„} d}dŠ	dŠ
t        j                  ||ft        j                  ¬«      }t	        d„ |j                  «       D «       «      }|j                  d«      }||f}t        j                  |d	z   t        j                  ¬«      }t        j                  ||d
z   t        j                  ¬«      }t        j                  dt        j                  ¬«      j                  d«      }t        |«      } | d |d	«        | ||d	«        | |||«        | |||«       y )Ni   c                 ó  •— | €t        ‰‰ft        j                  ¬«      }nt        | ‰‰f¬«      }|j                  j                  t        j                  k(  sJ ‚|j
                  dk  sJ ‚t        j                  «       5  t        j                  d‰t        j                  «       |||d d …d f   |f<   d d d «       |j                  j                  t        j                  k(  sJ ‚|j
                  dkD  sJ ‚y # 1 sw Y   ŒDxY w)N©rh   r‹   l        Úignore)r	   r    re   rg   rh   r\   ÚwarningsÚcatch_warningsÚfilterwarningsr   ÚSparseEfficiencyWarningrj   )ÚA_infoÚindexÚrhsÚAÚdÚwarn_msgs       €€r   Úcheckz%test_large_assignments.<locals>.checkï   sÔ   ø€ Øˆ>Ü˜1˜a˜&¬¯©Ô1‰Aä˜&¨¨A¨Ô/ˆAð �y‰y�‰¤"§(¡(Ò*Ð*Ð*Ø�u‰u�uŠ}Ðˆ}ä×$Ñ$Ó&ñ 	+Ü×#Ñ# H¨h¼×8VÑ8VÔWØ'*ˆAˆe’A�t�G‰n˜eÐ#Ñ$÷	+ð �y‰y�‰¤"§(¡(Ò*Ð*Ð*Ø�u‰u�uŠ}Ð‰}÷	+ð 	+ús   Á?4C6Ã6C?iµ  i˜·  zChanging the sparsity structurer�   c              3   óZ   K  — | ]#  }|j                  t        j                  «      –— Œ% y ­w)N)r�   r    re   )Ú.0Úcos     r   ú	<genexpr>z)test_large_assignments.<locals>.<genexpr>  s   è ø€ ÒH¨r�r—y‘y¤§¡×*ÑHùs   ‚)+r   r   é,  i�_ )r®   r®   )
r   r    ÚonesÚfloat32ÚtupleÚnonzeror[   rZ   re   r	   )r©   r%   Úbig_dataÚ
big_coordsÚbig_infoÚindex_NÚ	index_300Úrhs_300Úrhs_300_sparser§   r¨   s            @@r   Útest_large_assignmentsrº   ç   s  ù€ ô
 �eÔõð" 	€AØ€AØ0€Hä�w‰w˜˜1�v¤R§Z¡ZÔ0€HÜÑH°X×5EÑ5EÓ5GÔHÓH€JØ×Ñ Ó#€HØ˜*Ð%€Hä�i‰i˜˜A™¤R§X¡XÔ.€GÜ—	‘	˜!˜Q ™W¬B¯H©HÔ5€Iä�i‰i˜	¬¯©Ô4×<Ñ<¸ZÓH€GÜ˜wÓ'€Nñ 
ˆ$�˜Ôñ 
ˆ(�I˜qÔ!ñ 
ˆ(�I˜wÔ'ñ 
ˆ(�I˜~Õ.r   )"rŸ   Únumpyr    Únumpy.testingr   r   r   Úscipy._lib._testutilsr   Úscipy.sparser   r   r	   r
   r   Úscipyr   r�   r   r'   r-   r2   ÚmarkÚparametrizerA   rV   Úxfail_on_32bitÚtimeoutr`   rz   rˆ   rš   Úxslowrº   © r   r   ú<module>rÆ      s¥  ðÛ Û ß PÑ PÝ 3ß MÕ MÝ Û ò+ò0ò"-ò-ð ‡�×ÑÐ=Ù’,ÚÚðó ð ˆðñ ’,ÚÚðó ð ˆðñ ’,ÚÚðó ð ˆfðñ ’/ÚÚð!ó "ð ˆððóñ",ó#ð",ò(/ð& ‡�×ÑÐ?Ó@Ø‡�×Ñ�QÓØ‡�×Ñ˜ ¨Y¸
ÀIÐ NÓOñ+ó Pó ó Að+ò52ðn ‡�×Ñ˜ ¨Y¸
ÀIÐ NÓOñ
ó Pð
ò&9ð0 ‡�×Ññ1/ó ñ1/r   