
    <>iE                        S SK r S SKrS SKr S SKrS SKr	 S SK
JrJrJrJr   S SKrS\	R                   " 5       4S\	R"                  " 5       4S\	R$                  " 5       4S\	R&                  " 5       4S\	R(                  " 5       4S\	R*                  " 5       4S	\	R,                  " 5       4S
\	R.                  " 5       4S\	R0                  " 5       4S\	R2                  " 5       4S\	R4                  " 5       4/r\ V s/ s H  o S    S:w  d  M  U PM     sn r\ R                  R;                  S\	R<                  \	R>                  \	R@                  \	RB                  /5      S 5       r"S r#S r$S r%\ R                  R;                  S\	R<                  \	R>                  \	R@                  \	RB                  /5      S 5       r&\ R                  R;                  S\5      S 5       r'\ R                  R;                  S\5      S 5       r(\ R                  R;                  S\5      S 5       r)\ R                  R;                  S\5      S 5       r*\ R                  R;                  S\5      S 5       r+\ R                  R;                  S\5      S 5       r,\ R                  R;                  S\5      S 5       r-\ R                  R;                  S\	R<                  \	R>                  \	R@                  \	RB                  /5      \ R                  R;                  S\5      S 5       5       r.\ R                  R_                  \(       + SS9\ R                  R;                  S\\45      \ R                  R;                  S\5      S  5       5       5       r0\ R                  R_                  \(       + SS9\ R                  R;                  S\\45      \ R                  R;                  S\5      S! 5       5       5       r1\ R                  R_                  \(       + S"S9\ R                  R;                  S\5      S# 5       5       r2g! \ a    \ R                  R                  r GN)f = f! \ a    SrSrSrSr GN-f = f! \ a    Sr GN7f = fs  sn f )$    N)	csr_array	coo_array
csr_matrix
coo_matrixi1i2i4i8u1u2u4u8f2f4f8sparse_tensor_typec                    [         R                  " / SQ/ SQ/ SQ/ SQ/5      nSnU R                  X5      nUR                  S:X  d   eUR                  S:X  d   eUR
                  UR
                  :X  d   eUR                  (       d   eUR                  S5      US   :X  d   eUR                  U:X  d   eUR                  S	:X  d   e[        R                  " U5      nU" 5       c   eAU" 5       b   eg )
N   r      r   r   r   r   r   r   r   r         r   r   r   r   r   r   r   r   r         xyr      r   r   )nparrayfrom_dense_numpyndimsizeshape
is_mutabledim_name	dim_namesnon_zero_lengthweakrefref)r   datar*   sparse_tensorwrs        _/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_sparse_tensor.pytest_sparse_tensor_attrsr2   >   s     88	 D I&77HM"""###$**,,,####!!!$	!444""i///((A---	]	#B44<<    c                  ~   [         R                  " / SQ/5      R                  n [         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  R                  U5      n[        R                  " U5      nUR                  5       u  pVUR                  (       d   e[        R                  " U5      US-   :X  d   eS n[         R                  " X5      (       d   e[         R                  " X5      (       d   eUR                  R                  (       d   eg )	Nr   r   r   r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r"   r#   TpaSparseCOOTensorr$   sysgetrefcountto_numpyhas_canonical_formatarray_equalflagsc_contiguous)expected_dataexpected_coordsr#   r/   nresult_dataresult_coordss          r1   "test_sparse_coo_tensor_base_objectrH   \   s   HH01244Mhh   	q  HH	 E &&77>M&A!.!7!7!9K----??=)QU222M>>-5555>>/9999++++r3   c                  n   [         R                  " / SQ/5      R                  n [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  R                  U5      n[        R                  " U5      nUR                  5       u  pgn[        R                  " U5      US-   :X  d   eS n[         R                  " X5      (       d   e[         R                  " X5      (       d   e[         R                  " X(5      (       d   eg )	Nr5   r   r   r   r   r   r8   r   r   r   r   r   )
r"   r#   r9   r:   SparseCSRMatrixr$   r<   r=   r>   r@   	r.   indptrindicesr#   r/   rE   rF   result_indptrresult_indicess	            r1   "test_sparse_csr_matrix_base_objectrQ   t   s    88'()++DXXo&Fhh)*GHH	 E &&77>M&A1>1G1G1I.K??=)QU222M>>$,,,,>>&0000>>'2222r3   c                     [         R                  " / SQ/5      R                  n [         R                  " / SQ5      /n[         R                  " / SQ5      [         R                  " / SQ5      /n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  R                  U5      n[        R                  " U5      nUR                  5       u  pgn[        R                  " U5      US	-   :X  d   eS n[         R                  " X5      (       d   e[         R                  " US
   US
   5      (       d   e[         R                  " US
   US
   5      (       d   e[         R                  " US   US   5      (       d   eg )Nr5   rJ   r   r7   r   r   r8   r   r   r   r   r   r   r7   )
r"   r#   r9   r:   SparseCSFTensorr$   r<   r=   r>   r@   rL   s	            r1   "test_sparse_csf_tensor_base_objectrU      s:   88'()++Dhh'(F

#$G HH	 E &&77>M&A1>1G1G1I.K??=)QU222M>>$,,,,>>&)]1%56666>>'!*nQ&78888>>'!*nQ&78888r3   c                 d   S nS n[         R                  R                  SS5      S S 2S S S24   nU R                  U5      nU R                  [         R                  " U5      5      nU" XE5        UR                  5       nSUS'   U R                  [         R                  " U5      5      nU" XE5        g )Nc                 P    U R                  U5      (       d   eX:X  d   eX:w  a   eg Nequalsabs     r1   eq%test_sparse_tensor_equals.<locals>.eq   s)    xx{{{vvF|Fr3   c                 P    U R                  U5      (       a   eX:X  a   eX:w  d   eg rX   rY   r[   s     r1   ne%test_sparse_tensor_equals.<locals>.ne   s'    88A;;F|vvr3   
   r   r   g      ?)	   r   )r"   randomrandnr$   ascontiguousarraycopy)r   r^   ra   r.   sparse_tensor1sparse_tensor2s         r1   test_sparse_tensor_equalsrk      s    

 99??2q!"cc'*D'88>N'88
T"$N~&99;DDJ'88
T"$N~&r3   zdtype_str,arrow_typec                    [         R                  " U 5      n[         R                  " / SQ/5      R                  R	                  U5      n[         R                  " / SQ/ SQ/5      R                  n[         R                  " / SQ/ SQ/ SQ/ SQ/5      R	                  U5      n[
        R                  R                  U5      n[
        R                  R                  U5      n[        U5        UR                  5       u  pUR                  U:X  d   e[         R                  " X85      (       d   e[         R                  " XI5      (       d   e[
        R                  R                  U5      n[        U5        UR                  5       u  pUR                  U:X  d   e[         R                  " X85      (       d   e[         R                  " XI5      (       d   eg )Nr5   r6   r8   r   r   r   r   )r"   dtyper#   r9   astyper:   Tensor
from_numpyr;   r$   reprr>   typer@   from_tensor)
	dtype_str
arrow_typerm   rC   rD   r#   tensorr/   rF   rG   s
             r1   !test_sparse_coo_tensor_from_denserw      sy   HHYEHH01244;;EBMhh   	q  HH	 
 ve} 
 YY!!%(F &&77>M!.!7!7!9K+++>>-5555>>/9999 &&226:M!.!7!7!9K+++>>-5555>>/9999r3   c                 ,   [         R                  " U 5      n[         R                  " / SQ/5      R                  R	                  U5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      R	                  U5      n[
        R                  R                  U5      n[
        R                  R                  U5      n[        U5        UR                  5       u  pnUR                  U:X  d   e[         R                  " X95      (       d   e[         R                  " XJ5      (       d   e[         R                  " X[5      (       d   e[
        R                  R                  U5      n[        U5        UR                  5       u  pnUR                  U:X  d   e[         R                  " X95      (       d   e[         R                  " XJ5      (       d   e[         R                  " X[5      (       d   eg )Nr5   rJ   r8   r   r   r   r   )r"   rm   r#   r9   rn   r:   ro   rp   rK   r$   rq   r>   rr   r@   rs   rt   ru   rm   r.   rM   rN   r#   rv   r/   rF   rO   rP   s               r1   !test_sparse_csr_matrix_from_denserz      s   HHYE88'()++2259DXXo&Fhh)*GHH	 
 ve} 
 YY!!%(F &&77>M1>1G1G1I.K+++>>$,,,,>>&0000>>'2222 &&226:M1>1G1G1I.K+++>>$,,,,>>&0000>>'2222r3   c                 8   [         R                  " U 5      n[         R                  " / SQ/5      R                  R	                  U5      n[         R                  " / SQ5      /n[         R                  " / SQ5      [         R                  " / SQ5      /n[         R                  " / SQ/ SQ/ SQ/ SQ/5      R	                  U5      n[
        R                  R                  U5      n[        U5        UR                  5       u  pn
UR                  U:X  d   e[         R                  " X85      (       d   e[         R                  " US	   U	S	   5      (       d   e[         R                  " US	   U
S	   5      (       d   e[         R                  " US
   U
S
   5      (       d   eg Nr5   rJ   rS   r8   r   r   r   r   r   r7   )r"   rm   r#   r9   rn   r:   rT   r$   rq   r>   rr   r@   )rt   ru   rm   r.   rM   rN   r#   r/   rF   rO   rP   s              r1   'test_sparse_csf_tensor_from_dense_numpyr}     sO   HHYE88'()++2259Dhh'(F

#$G HH	 
 ve} 
 &&77>M1>1G1G1I.K+++>>$,,,,>>&)]1%56666>>'!*nQ&78888>>'!*nQ&78888r3   c                 v   [         R                  " U 5      n[         R                  " / SQ/5      R                  R	                  U5      n[         R                  " / SQ5      /n[         R                  " / SQ5      [         R                  " / SQ5      /n[         R                  " / SQ/ SQ/ SQ/ SQ/5      R	                  U5      n[
        R                  R                  U5      n[
        R                  R                  U5      n[        U5        UR                  5       u  pnUR                  U:X  d   e[         R                  " X95      (       d   e[         R                  " US	   U
S	   5      (       d   e[         R                  " US	   US	   5      (       d   e[         R                  " US
   US
   5      (       d   eg r|   )r"   rm   r#   r9   rn   r:   ro   rp   rT   rs   rq   r>   rr   r@   ry   s               r1   (test_sparse_csf_tensor_from_dense_tensorr     se   HHYE88'()++2259Dhh'(F

#$G HH	 
 ve} 
 YY!!%(F &&226:M1>1G1G1I.K+++>>$,,,,>>&)]1%56666>>'!*nQ&78888>>'!*nQ&78888r3   c                     [         R                  " U 5      n[         R                  " / SQ/5      R                  R	                  U5      n[         R                  " / SQ/ SQ/5      R                  nSnSn[
        R                  R                  X4UU5      n[        U5        UR                  5       u  pUR                  U:X  d   e[         R                  " X85      (       d   e[         R                  " XI5      (       d   eUR                  U:X  d   eg )Nr7   r   r   r   r   r   r   r   r   r   r7   r   r   r   r   r   r   r   r   r   r   )r"   rm   r#   r9   rn   r:   r;   rp   rq   r>   rr   r@   r*   )
rt   ru   rm   r.   coordsr'   r*   r/   rF   rG   s
             r1   &test_sparse_coo_tensor_numpy_roundtripr   8  s    HHYE88'()++2259DXX  	q  EI&&11$2;=M!.!7!7!9K+++>>$,,,,>>&0000""i///r3   c                 p   [         R                  " U 5      n[         R                  " / SQ/5      R                  R	                  U5      n[         R                  " / SQ5      n[         R                  " / SQ5      nSnSn[
        R                  R                  X4UXg5      n[        U5        UR                  5       u  pnUR                  U:X  d   e[         R                  " X95      (       d   e[         R                  " XJ5      (       d   e[         R                  " X[5      (       d   eUR                  U:X  d   eg )Nr5   rJ   r8   r   r   )r"   rm   r#   r9   rn   r:   rK   rp   rq   r>   rr   r@   r*   )rt   ru   rm   r.   rM   rN   r'   r*   r/   rF   rO   rP   s               r1   &test_sparse_csr_matrix_numpy_roundtripr   M  s    HHYE88'()++2259DXXo&Fhh)*GEI&&11$27DM1>1G1G1I.K+++>>$,,,,>>&0000>>'2222""i///r3   c                    [         R                  " U 5      n[         R                  " / SQ/5      R                  R	                  U5      n[         R                  " / SQ5      /n[         R                  " / SQ5      [         R                  " / SQ5      /nSnSnSn[
        R                  R                  X4UXvU5      n	[        U	5        U	R                  5       u  pnU	R                  U:X  d   e[         R                  " X:5      (       d   e[         R                  " US   US   5      (       d   e[         R                  " US   US   5      (       d   e[         R                  " US	   US	   5      (       d   eU	R                  U:X  d   eg )
Nr5   rJ   rS   r8   )r   r7   r   r   r   r7   )r"   rm   r#   r9   rn   r:   rT   rp   rq   r>   rr   r@   r*   )rt   ru   rm   r.   rM   rN   
axis_orderr'   r*   r/   rF   rO   rP   s                r1   &test_sparse_csf_tensor_numpy_roundtripr   a  sO   HHYE88'()++2259Dhh'(F

#$G JEI&&11$272;=M 	1>1G1G1I.K+++>>$,,,,>>&)]1%56666>>'!*nQ&78888>>'!*nQ&78888""i///r3   c                    [         R                  " U 5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      R                  U5      nSnUR	                  XE5      nUR                  5       nUR                  5       nUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   e[         R                  " XH5      (       d   eg )N)r   r   rd   r   )r      r   r   )r   r   r   r   )r   r   r   r   r   )
r"   rm   r#   rn   r$   	to_tensorr>   rr   r*   r@   )	rt   ru   r   rm   r#   r*   r/   rv   result_arrays	            r1   test_dense_to_sparse_tensorr   {  s     HHYEHHl"""$ % &,VE] 
 I&77IM$$&F??$L+++;;*$$$""i///>>%....r3   zrequires scipy)reasonsparse_objectc                    SnSn[         R                  " U 5      n[         R                  " / SQ5      R                  U5      n[         R                  " / SQ5      n[         R                  " / SQ5      nU" XgU44US9n	[        R
                  R                  U	US9n
U
R                  5       nU	R                  (       a   eU
R                  (       a   eUR                  (       a   eU
R                  U:X  d   eU
R                  U:X  d   eU	R                  UR                  :X  d   e[         R                  " U	R                  UR                  5      (       d   e[         R                  " U	R                  UR                  5      (       d   e[         R                  " U	R                  UR                  5      (       d   eU	R                  5       n[         R                  " XR!                  5       R#                  5       5      (       d   eU	R%                  5         [        R
                  R                  U	US9n
U
R                  5       nU	R                  (       d   eU
R                  (       d   eUR                  (       d   eg )Nr   r   r   r   r   r'   r*   )r"   rm   r#   rn   r:   r;   
from_scipyto_scipyr?   rr   r*   r@   r.   rowcoltoarrayr   r>   sum_duplicates)rt   ru   r   r'   r*   rm   r.   r   r   scipy_matrixr/   out_scipy_matrixdense_arrays                r1   &test_sparse_coo_tensor_scipy_roundtripr     s   
 EIHHYE88&'..u5D
((%
&C
((%
&C !$c
!35AL&&11,<E 2 GM$--/000011114444+++""i///!1!7!7777>>,++-=-B-BCCCC>>,**,<,@,@AAAA>>,**,<,@,@AAAA&&(K>>+'>'>'@'I'I'KLLLL !&&11,<E 2 GM$--/,,,,----0000r3   c                    SnSn[         R                  " U 5      n[         R                  " / SQ5      R                  U5      n[         R                  " / SQ5      n[         R                  " / SQ5      nU" XhU4US9n	[        R
                  R                  U	US9n
U
R                  5       nU
R                  U:X  d   eU
R                  U:X  d   eU	R                  UR                  :X  d   e[         R                  " U	R                  UR                  5      (       d   e[         R                  " U	R                  UR                  5      (       d   e[         R                  " U	R                  UR                  5      (       d   eU	R                  5       n[         R                  " XR                  5       R!                  5       5      (       d   eg )Nr   r   r5   rJ   r8   r   r   )r"   rm   r#   rn   r:   rK   r   r   rr   r*   r@   r.   rM   rN   r   r   r>   )rt   ru   r   r'   r*   rm   r.   rM   rN   sparse_arrayr/   out_sparse_arrayr   s                r1   &test_sparse_csr_matrix_scipy_roundtripr     sx   
 EIHHYE88&'..u5DXXo&Fhh)*G $!8FL&&11,<E 2 GM$--/+++""i///!1!7!7777>>,++-=-B-BCCCC>>,--/?/F/FGGGG>>,..0@0H0HIIII&&(K>>+'>'>'@'I'I'KLLLLr3   zrequires pydata/sparsec                    [         R                  " U 5      n[         R                  " / SQ5      R                  U5      n[         R                  " / SQ/ SQ/5      nSnSn[        R
                  " X4US9n[        R                  R                  UUS9nUR                  5       n	UR                  U:X  d   eUR                  U:X  d   eUR                  U	R                  :X  d   e[         R                  " UR                  U	R                  5      (       d   e[         R                  " UR                  U	R                  5      (       d   e[         R                  " UR                  5       UR!                  5       R#                  5       5      (       d   eg )Nr   r   r   r   r   )r.   r   r'   r   )r"   rm   r#   rn   sparseCOOr:   r;   from_pydata_sparseto_pydata_sparserr   r*   r@   r.   r   todenser   r>   )
rt   ru   rm   r.   r   r'   r*   r   r/   r   s
             r1   .test_pydata_sparse_sparse_coo_tensor_roundtripr     s[    HHYE88&'..u5DXX F EI::4eDL&&99,DM : OM$557+++""i///!1!7!7777>>,++-=-B-BCCCC>>,--/?/F/FGGGG>>,..0'113<<>@ @ @ @r3   )3pytestr<   r,   numpyr"   ImportErrormark
pytestmarkpyarrowr:   scipy.sparser   r   r   r   r   int8int16int32int64uint8uint16uint32uint64float16float32float64tensor_type_pairsscipy_type_pairsparametrizerK   SparseCSCMatrixr;   rT   r2   rH   rQ   rU   rk   rw   rz   r}   r   r   r   r   r   skipifr   r   r   )pairs   0r1   <module>r      s  $  
 # II 
2779	288:	288:	288:	288:	299;	299;	299;	2::<	2::<	2::<   '&Tq'T/D& 
 -	0 0,03*92 -	0 ''. /1BC: D:@ /1BC3 D3@ /1BC9 D94 /1BC9 D96 /1BC0 D0( /1BC0 D0& /1BC0 D02 -	0  /1BC/ D/$ 
N+;<9j*AB/1AB$1 C C =$1N 
N+;<9j*AB/1ABM C C =M2 J'?@/1BC@ D A@I  #""J#  JJII	  F&s?   P P? Q 4Q#Q#P<;P<?QQQ Q 