
    tKg                        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 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d Zej$                  j'                  deeee	g      d        Zy)    N)assert_array_almost_equalassert_)
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         _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/sparse/tests/test_csr.py_check_csr_rowslicer      sE    BxHQUIh	(9(9(;A(>?DOz)*    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IINN1
		!Q AAa#gJa=DD$%D$#Ar1oB2 F
 1XB2q$/  r   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IINN1
		!Q AAa#gJa=D1XAa!eGQJ-++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_getcolr0   /   s    
AIINN1
		!Q AAa#gJa=D1XAqQwJ-++a.!'7??+<=W+, r   z"matrix_input, axis, expected_shape)r   r   r   r   )r   r   r   r   )r   r      r   )r      r   )r1   r   both)r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r1   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   r3   )r   shape)matrix_inputaxisexpected_shapeslice_1slice_2slice_3actual_shape_1actual_shape_2s           r   test_csr_empty_slicesr?   =   s5   & ""$**1-1GGkGqy%ggoq&89AACII%ggoq&89AACII	%a&89AACII%a&89AACII	%ggoww&FGOOQWW%ggoww&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   )r1   r2   r4   )         )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_indexingrS   b   s   y)Y78D(MXXm,N)+?AUVMXXm,N)+?@Mhh}Q/0"((=;K2LMN}%--/K'//1L}%K'L}%K'L<',,...<',,...<',,...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   r1   csr)formatN)r   iinfoint32maxr   indicesdtypeindptrr	   int64r6   )	max_int32rF   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_int64rm   u   sT    "&&I 5D#CMMM QEQE
dS%L)
*C
dS%L)
*C}q -!"34y@@@;;

 0 0<BHH<<<<<;;

 0 0<BHH<<<<< 3*U+D<<!>!BBBB=(1,y888<<!2!2>bhh>>>>> 399%I399%II.u=Jtzz)))##rxx/// &*+E
dS%L)
*Cc3Z.G??  BHH,,,?? IM111r   clsc                    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
   copyr\   astyper]   rZ   testingassert_array_equalr   )rn   rngbase_mtxindptr_64bitindices_64bitmtxs         r   #test_mixed_index_dtype_int_indexingr}      s    ))


"C6==Rc3GHH==?LMMOM"//00:L$,,33BHH=M,6


%%1qM!!#aVQY'')	
 	

%%Aq6	N""$QAY'')	
 7r   )numpyr   numpy.testingr   r   scipy.sparser   r   r   r   r	   scipyr
   pytestr   r%   r+   r0   markparametrizer?   rS   rm   r}    r   r   <module>r      s    < M M  +0"-- =,   ,   ,  f /! " ",#",(/&52n Y
I NO
 P
r   