
    >qj'                        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         Z/opt/rentech/trading_bot/.venv/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 0 	0B2q$/	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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_getcolr2   1   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   )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-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   )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8D(MXXm,N)+?AUVMXXm,N)+?@Mhh}Q/0"((=;K2LMN}%--/K'//1L}%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T7;;!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 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   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==Rc3GHH==?LMMOM"//00:L$,,33BHH=M,6 



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

%%Aq6	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aL&&u-EaL&&t,EaL&&u-EaL&&t,EaL&&u-Eu}}5(ABu}}4(@Au}}5(ABu}}4(@Au}}5(AB	z)>	? GIy)*88v8FG 
z)>	? <I;--F-;< 
z)>	? 9)***89 9G G< <9 9s$   "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    >1a&1A&A/A yy"((***uuu}}$$& 	+##Hh8V8VW'*AeAtGne#$	+ yy"((***uuu}}	+ 	+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     Hrryy*Hs   )+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0Hww1vRZZ0HHX5E5E5GHHJ#H*%HiiARXX.G		!QWBHH5Iii	4<<ZHGw'N 
$ 
(Iq! 
(Iw' 
(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2n Y
I NO
 P
&90 1/ 1/r   