
    -ii2              	       6   d Z ddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZmZmZmZmZmZmZm Z!m"Z#m$Z%m&Z'm(Z)m*Z+m,Z, ddddd	d
dd
dZ-d Z.ej/        0                    d           G d d                      Z1 G d de1          Z2 G d de1          Z3 G d de1          Z4ej/        j5         G d de1                      Z6ej/        j5         G d de1                      Z7ej/        0                    d           G d d                      Z8dS )z2 Test functions involving 64bit or 32bit indexing     N)
	bsr_array	coo_array	csc_array	csr_array	dia_array
bsr_matrix
coo_matrix
csc_matrix
csr_matrix
dia_matrix   )TestBSRTestCOOTestCSCTestCSRTestDIATestDOKTestLILTestBSRMatrixTestCOOMatrixTestCSCMatrixTestCSRMatrixTestDIAMatrixTestDOKMatrixTestLILMatrixwith_64bit_maxval_limitz%expm for 64-bit indices not availablez)linsolve for 64-bit indices not availableztest implemented in base classz%test actually requires 64-bit to workztest verifies int32 indexesztest verifies int64 indexes)	test_expmtest_inv
test_solvetest_scalar_idx_dtypetest_large_dimensions_reshapetest_constructor_smallcoltest_constructor_largecoltest_tocoo_tocsr_tocsc_gh19245c              #     K   | dk    r!t           t          t          t          t          g}nd| dk    rt
          t          g}nO| dk    r!t          t          t          t          t          g}n(| dk    rt          t          g}nt          d| d          |D ]}t          t!          |                    D ]}t#          ||          }|                    d          rt#          |dd	          sg }t&                              |          }|r3|                    t,          j                            |
                     t#          |dg           }|D ] }|j        dv r|                    |           !t-          j        |||          V  ׌dS )a  Yield all tests for all formats

    This is more than testing get_index_dtype. It allows checking whether upcasting
    or downcasting the index dtypes affects test results. The approach used here
    does not try to figure out which tests might fail due to 32/64-bit issues.
    We just run them all.
    So, each test method in that uses cases_64bit reruns most of the test suite!
    sparraysparray-extraspmatrixspmatrix-extrazparameter sp_api=z is not validtest_slowFreason
pytestmark)skipifskipxfailxslow)marksN)_TestBSR_TestCOO_TestCSC_TestCSR_TestDIA_TestDOK_TestLIL_TestBSRMatrix_TestCOOMatrix_TestCSCMatrix_TestCSRMatrix_TestDIAMatrix_TestDOKMatrix_TestLILMatrix
ValueErrorsorteddirgetattr
startswith
SKIP_TESTSgetappendpytestmarkr0   nameparam)	sp_apiTEST_CLASSESclsmethod_namemethodr3   msgmarkersrK   s	            c/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_64bit.pycases_64bitrV   *   s       (HhI	?	"	"
 !(+	:		&&8	#	#	#&7<f<<<=== B B!#c((++ 	B 	BKS+..F&&w// B66B nn[11 ?LL!1!1!1!=!=>>>!&,;;# + +Dy$HHHT***l35AAAAAA	BB B    zfails in parallelr,   c                       e Zd Zd ZdS )RunAll64Bitc                 H    t          di |d             } |||           d S )Nc                 4    |             }t          |d          r|                                 	  t          ||                       t          |d          r|                                 d S d S # t          |d          r|                                 w w xY w)Nsetup_methodteardown_method)hasattrr\   rE   r]   )rP   rQ   instances      rU   checkz,RunAll64Bit._check_resiliency.<locals>.check]   s    suuHx00 (%%'''/.+..0008%677 /,,...../ /78%677 /,,..../s   A0 0'B )r   )selfrP   rQ   kwr`   s        rU   _check_resiliencyzRunAll64Bit._check_resiliencyY   sF     
!	&	&2	&	&	/ 	/ 
'	&	/ 	c;rW   N)__name__
__module____qualname__rd   ra   rW   rU   rY   rY   W   s#                 rW   rY   c                      e Zd Zej                            d ed                    d             Zej                            d ed                    d             Zej                            d ed                    d             Z	ej        
                    d          ej                            d ed                    d                         ZdS )	Test64BitArraycls,method_namer&   c                 6    |                      ||d           d S N
   maxval_limitrd   rb   rP   rQ   s      rU   test_resiliency_limit_10z'Test64BitArray.test_resiliency_limit_10n   #    sKbAAAAArW   c                 J    |                      ||t          j                   d S Nfixed_dtyperd   npint32rq   s      rU   test_resiliency_all_32z%Test64BitArray.test_resiliency_all_32r   %    sKRXFFFFFrW   c                 J    |                      ||t          j                   d S ru   rd   ry   int64rq   s      rU   test_resiliency_all_64z%Test64BitArray.test_resiliency_all_64v   r|   rW      c                 2    |                      ||           d S Nrp   rq   s      rU   test_resiliency_randomz%Test64BitArray.test_resiliency_randomz   s      	sK00000rW   Nre   rf   rg   rJ   rK   parametrizerV   rr   r{   r   	fail_slowr   ra   rW   rU   ri   ri   k   s         [.I0F0FGGB B HGB [.I0F0FGGG G HGG [.I0F0FGGG G HGG [1[.I0F0FGG1 1 HG 1 1 1rW   ri   c                       e Zd Zej                            d          ej                            d ed                    d                         ZdS )Test64BitMatrix   rj   r(   c                 6    |                      ||d           d S NT)assert_32bitrp   rq   s      rU   
test_no_64zTest64BitMatrix.test_no_64   %     	sKdCCCCCrW   N)	re   rf   rg   rJ   rK   r   r   rV   r   ra   rW   rU   r   r      sl        [1[.J0G0GHHD D IH D D DrW   r   c                      e Zd Zej                            d ed                    d             Zej                            d ed                    d             Zej                            d ed                    d             Z	ej        
                    d          ej                            d ed                    d                         ZdS )	Test64BitMatrixSameAsArrayrj   r(   c                 6    |                      ||d           d S rl   rp   rq   s      rU   rr   z3Test64BitMatrixSameAsArray.test_resiliency_limit_10   rs   rW   c                 J    |                      ||t          j                   d S ru   rx   rq   s      rU   r{   z1Test64BitMatrixSameAsArray.test_resiliency_all_32   r|   rW   c                 J    |                      ||t          j                   d S ru   r~   rq   s      rU   r   z1Test64BitMatrixSameAsArray.test_resiliency_all_64   r|   rW   r   c                 2    |                      ||           d S r   rp   rq   s      rU   r   z1Test64BitMatrixSameAsArray.test_resiliency_random         	sK00000rW   Nr   ra   rW   rU   r   r      s         [.J0G0GHHB B IHB [.J0G0GHHG G IHG [.J0G0GHHG G IHG [1[.J0G0GHH1 1 IH 1 1 1rW   r   c                      e Zd Zej                            d ed                    d             Zej                            d ed                    d             Zej                            d ed                    d             Z	ej        
                    d          ej                            d ed                    d                         ZdS )	Test64BitArrayExtrarj   r'   c                 6    |                      ||d           d S rl   rp   rq   s      rU   rr   z,Test64BitArrayExtra.test_resiliency_limit_10   rs   rW   c                 J    |                      ||t          j                   d S ru   rx   rq   s      rU   r{   z*Test64BitArrayExtra.test_resiliency_all_32   r|   rW   c                 J    |                      ||t          j                   d S ru   r~   rq   s      rU   r   z*Test64BitArrayExtra.test_resiliency_all_64   r|   rW   r   c                 2    |                      ||           d S r   rp   rq   s      rU   r   z*Test64BitArrayExtra.test_resiliency_random   r   rW   Nr   ra   rW   rU   r   r      s         [.O0L0LMMB B NMB [.O0L0LMMG G NMG [.O0L0LMMG G NMG [1[.O0L0LMM1 1 NM 1 1 1rW   r   c                   P   e Zd Zej                            d          ej                            d ed                    d                         Zej                            d ed                    d             Z	ej                            d ed                    d             Z
ej                            d ed                    d             Zej                            d          ej                            d ed                    d	                         Zd
S )Test64BitMatrixExtrar   rj   r)   c                 6    |                      ||d           d S r   rp   rq   s      rU   r   zTest64BitMatrixExtra.test_no_64   r   rW   c                 6    |                      ||d           d S rl   rp   rq   s      rU   rr   z-Test64BitMatrixExtra.test_resiliency_limit_10   rs   rW   c                 J    |                      ||t          j                   d S ru   rx   rq   s      rU   r{   z+Test64BitMatrixExtra.test_resiliency_all_32   r|   rW   c                 J    |                      ||t          j                   d S ru   r~   rq   s      rU   r   z+Test64BitMatrixExtra.test_resiliency_all_64   r|   rW   r   c                 2    |                      ||           d S r   rp   rq   s      rU   r   z+Test64BitMatrixExtra.test_resiliency_random   r   rW   N)re   rf   rg   rJ   rK   r   r   rV   r   rr   r{   r   r   ra   rW   rU   r   r      s}        [1[.<L0M0MNND D ON D
 [.<L0M0MNNB B ONB [.<L0M0MNNG G ONG [.<L0M0MNNG G ONG [1[.<L0M0MNN1 1 ON 1 1 1rW   r   z%Fails in parallel for unknown reasonsc            
       >    e Zd Zeeeeeee	e
eeg
Zd Zd Zd Zd ZdS )Test64BitToolsc                 .   t          j        |          }|j        dv r |j        j        |k    o|j        j        |k    S |j        dk    r |j        j        |k    o|j        j        |k    S |j        dk    r|j        j        |k    S t          d|d          )N)csccsrbsrcoodiazmatrix z has no integer indices)	ry   dtypeformatindicesindptrrowcoloffsetsrB   )rb   mr   s      rU   _compare_index_dtypez#Test64BitTools._compare_index_dtype   s    8,,,IOu,K18>U3JKXEK5(Dqu{e/CDXIOu,-CqCCCDDDrW   c                 h     t          d           fd            } j        D ]} ||           d S )Nrm   rn   c                 4    | t           j                            dd                    }                    |t           j                  sJ  | t           j                            dd                    }                    |t           j                  sJ d S )Nrm   r      )ry   randomrandr   rz   r   )mat_clsr   rb   s     rU   r`   z9Test64BitTools.test_decorator_maxval_limit.<locals>.check   s    	r1--..A,,Q99999	r1--..A,,Q9999999rW   r   MAT_CLASSESrb   r`   r   s   `  rU   test_decorator_maxval_limitz*Test64BitTools.test_decorator_maxval_limit   sa     
!b	1	1	1	: 	: 	: 	: 
2	1	: ' 	 	GE'NNNN	 	rW   c                 h     t          d           fd            } j        D ]} ||           d S )NT)r   c                 6   d}d}t          d          D ]v} | t          j                            dd                    }|p                    |t          j                  }|p                    |t          j                  }|r|r d S wt          d          )NFd   	   z#both 32 and 64 bit indices not seen)rangery   r   r   r   rz   r   AssertionError)r   seen_32seen_64kr   rb   s        rU   r`   z:Test64BitTools.test_decorator_maxval_random.<locals>.check   s    GG3ZZ L LGBINN1a0011!KT%>%>q"(%K%K!KT%>%>q"(%K%K w EE$%JKKKrW   r   r   s   `  rU   test_decorator_maxval_randomz+Test64BitTools.test_decorator_maxval_random   sf     
!	-	-	-
	L 
	L 
	L 
	L 
.	-
	L ' 	 	GE'NNNN	 	rW   c                 t   t          t          j        d          d             }t          t          j                  d             } |t          t          t
                      |t          t          t
                      |t          t          t                      |t          t          t                     d S )Nr   )rw   downcast_maxvalc                     | ddgddgddgg          }t          j        t          |j        d           t          j        t          |j        d            |g d	g d
g          }t          j        t          |j        d           t          j        t          |j        d            |g d	g dg          }t          j        t          |j        d           d|_        t          j        t          |j                   d S Nr   r         r      )axisr   )r   r   r   )r   r   r   )r   r   r   F)rJ   raisesr   count_nonzerosumhas_canonical_formatsum_duplicatescsc_containercsr_containercoo_containeras       rU   check_limitedz8Test64BitTools.test_downcast_intp.<locals>.check_limited  s     1v1v1v677AM.!/BBBBM.!%a8888yyy)))455AM.!/BBBBM.!%a8888yyy)))455AM.!/BBBB%*A"M.!*:;;;;;rW   rv   c                     | ddgddgddgg          }|                     d           |                    d            |g d	g d
g          }|                     d           |                    d            |g d	g dg          }|                     d           d|_        |                                 d S r   )r   r   r   r   r   s       rU   check_unlimitedz:Test64BitTools.test_downcast_intp.<locals>.check_unlimited  s     1v1v1v677AOOO###EEqEMMMyyy)))455AOOO###EEqEMMMyyy)))455AOOO###%*A"rW   )	r   ry   r   r   r   r   r
   r   r	   )rb   r   r   s      rU   test_downcast_intpz!Test64BitTools.test_downcast_intp  s     
!RXq	I	I	I	< 	< 
J	I	< 
!RX	6	6	6	 	 
7	6	 	iI666	9i888j*j999
J
;;;;;rW   N)re   rf   rg   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   ra   rW   rU   r   r      sr         	J
J
9iIK
	E 	E 	E    &)< )< )< )< )<rW   r   )9__doc__rJ   numpyry   scipy.sparser   r   r   r   r   r   r	   r
   r   r   	test_baser   r4   r   r5   r   r6   r   r7   r   r8   r   r9   r   r:   r   r;   r   r<   r   r=   r   r>   r   r?   r   r@   r   rA   r   rG   rV   rK   thread_unsaferY   ri   r   r   r2   r   r   r   ra   rW   rU   <module>r      s    8 8                                                             * 9;==%L!>!>&C	 	
*B *B *BZ "566              76 &1 1 1 1 1[ 1 1 1*D D D D Dk D D D1 1 1 1 1 1 1 1, 1 1 1 1 1+ 1 1 1. 1 1 1 1 1; 1 1 18 "IJJ[< [< [< [< [< [< [< KJ[< [< [<rW   