a
    “ÀhX  ã                   @   s(  d dl Zd dlmZ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d„ Zdd„ Zd	d
„ Zdd„ Ze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d„ ƒZdd„ Zdd„ Zej d eeee	g¡d!d"„ ƒZdS )#é    N)Úassert_array_almost_equalÚassert_)Ú
csr_matrixÚ
csc_matrixÚ	csr_arrayÚ	csc_arrayÚhstack)Úsparsec                 C   s>   || |f }|| |f }t || ¡ d ƒ tt|ƒtu ƒ d S )Nr   )r   Útoarrayr   Útyper   )ÚiÚslÚXÚXcsrZnp_sliceZ	csr_slice© r   úW/var/www/html/assistant/venv/lib/python3.9/site-packages/scipy/sparse/tests/test_csr.pyÚ_check_csr_rowslice   s    r   c                  C   sŠ   d} t j d¡ t j | | f¡}d||dk< t|ƒ}td d d ƒtd d dƒtdddƒtdddƒg}t| ƒD ]}|D ]}t||||ƒ qpqhd S )Né
   r   çffffffæ?éÿÿÿÿé   éþÿÿÿé   )ÚnpÚrandomÚseedr   ÚsliceÚranger   )ÚNr   r   Zslicesr   r   r   r   r   Útest_csr_rowslice   s    



ýr   c                  C   s†   d} t j d¡ t j | | f¡}d||dk< t|ƒ}t| ƒD ]D}|||d …d d …f }| |¡}t|| ¡ ƒ tt	|ƒtu ƒ q<d S ©Nr   r   r   r   )
r   r   r   r   r   Zgetrowr   r
   r   r   )r   r   r   r   Zarr_rowZcsr_rowr   r   r   Útest_csr_getrow    s    
r!   c                  C   s†   d} t j d¡ t j | | f¡}d||dk< t|ƒ}t| ƒD ]D}|d d …||d …f }| |¡}t|| ¡ ƒ tt	|ƒtu ƒ q<d S r    )
r   r   r   r   r   Zgetcolr   r
   r   r   )r   r   r   r   Zarr_colZcsr_colr   r   r   Útest_csr_getcol/   s    
r"   z"matrix_input, axis, expected_shape)r   r   r   r   )r   r   r   r   )r   r   é   r   )r   é   r   )r#   r   Úboth)r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r#   r   )r   é   c                 C   sò   |   ¡ jd d }|}|d }|dkr\| ||…d d …f   ¡ j}| ||…d d …f   ¡ j}nz|dkrš| d d …||…f   ¡ j}| d d …||…f   ¡ j}n<|dkrÖ| ||…||…f   ¡ j}| ||…||…f   ¡ j}||ksâJ ‚||ksîJ ‚d S )Nr   r   r%   )r
   Úshape)Zmatrix_inputZaxisZexpected_shapeZslice_1Zslice_2Zslice_3Zactual_shape_1Zactual_shape_2r   r   r   Útest_csr_empty_slices=   s    r(   c                  C   sä   t g d¢g d¢g d¢gƒ} g d¢}t |¡}g d¢g d¢g d¢g}t |¡}g d¢g d¢f}t |d ¡t |d ¡f}| |  ¡ }| |  ¡ }| | }	| | }
| | }| | }||k ¡ sÀJ ‚|	|
k ¡ sÐJ ‚||k ¡ sàJ ‚d S )N)r   r   r   )r#   r$   r&   )é   é   é   )FTFr   r   )r   r   Úarrayr
   Úall)ÚdataZlist_indices1Zarray_indices1Zlist_indices2Zarray_indices2Zlist_indices3Zarray_indices3Zslice_list1Zslice_array1Zslice_list2Zslice_array2Zslice_list3Zslice_array3r   r   r   Útest_csr_bool_indexingb   s     

r/   c                  C   sÊ  t  t j¡j} dg}dg}| d }d}|d g}|d g}t|||ffƒ}t|||ffƒ}t|d |d ƒ| k stJ ‚|jj|jj  kr’t jks˜n J ‚|jj|jj  kr¶t jks¼n J ‚t||gdd}	|	j ¡ || d ksæJ ‚|| d | ksúJ ‚|	jj|	jj  krt j	ks"n J ‚t|j
ƒ}
t|j
ƒ}t|
|gdd}|j
|	j
ksXJ ‚|jjt j	kslJ ‚| | d g}t|||ffƒ}t||gdd}|jjt jks®J ‚|j ¡ | d ksÆJ ‚dS )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   r#   Zcsr)ÚformatN)r   ZiinfoZint32Úmaxr   ÚindicesZdtypeÚindptrr   Úint64r'   )Z	max_int32r.   ÚrowZmax_indices_1Zmax_indices_2Zcol_1Zcol_2ZX_1ZX_2ZX_hsZ	X_1_emptyZ	X_2_emptyZ
X_hs_emptyZcol_3ZX_3ZX_hs_32r   r   r   Útest_csr_hstack_int64u   s4    

$$(

r6   Úclsc                 C   sÒ   t j d¡}| tjdd|ddƒ}| ¡ }| ¡ }|j t j¡|_|j t j¡|_|||fD ]p}t j	 
|ddgd d …f  ¡ |ddgd d …f  ¡ ¡ t j	 
|d d …ddgf  ¡ |d d …ddgf  ¡ ¡ q\d S )Nr   é2   gš™™™™™¹?)Zrandom_stateZdensityr   r   )r   r   Zdefault_rngr	   Úcopyr3   Zastyper4   r2   ZtestingZassert_array_equalr
   )r7   ÚrngZbase_mtxZindptr_64bitZindices_64bitZmtxr   r   r   Ú#test_mixed_index_dtype_int_indexing¬   s    6r;   )Únumpyr   Znumpy.testingr   r   Zscipy.sparser   r   r   r   r   Zscipyr	   Zpytestr   r   r!   r"   ÚmarkZparametrizer(   r/   r6   r;   r   r   r   r   Ú<module>   sP   þýþýþýþýôÿ
7