
    g\D                        d dl Z d dlZd dlZ	 d dlZd dlZ		 d dl
mZmZ 	 d dlZd e	j                         fd e	j                         fd e	j                          fd e	j"                         fd e	j$                         fd e	j&                         fd	 e	j(                         fd
 e	j*                         fd e	j,                         fd e	j.                         fd e	j0                         fgZe j                  j5                  de	j6                  e	j8                  e	j:                  e	j<                  g      d        Zd Z d Z!d Z"e j                  j5                  de	j6                  e	j8                  e	j:                  e	j<                  g      d        Z#e j                  j5                  de      d        Z$e j                  j5                  de      d        Z%e j                  j5                  de      d        Z&e j                  j5                  de      d        Z'e j                  j5                  de      d        Z(e j                  j5                  de      d        Z)e j                  j5                  de      d        Z*e j                  j5                  de	j6                  e	j8                  e	j:                  e	j<                  g      e j                  j5                  de      d               Z+e j                  jY                  e d      e j                  j5                  de      d               Z-e j                  jY                  e d      e j                  j5                  de      d                Z.e j                  jY                  e d!      e j                  j5                  de      d"               Z/y# e$ r e j                  j                  ZY w xY w# e$ r dZdZY w xY w# e$ r dZY w xY w)#    N)
csr_matrix
coo_matrixi1i2i4i8u1u2u4u8f2f4f8sparse_tensor_typec                    t        j                  g dg dg dg dg      }d}| j                  ||      }|j                  dk(  sJ |j                  dk(  sJ |j
                  |j
                  k(  sJ |j                  sJ |j                  d      |d   k(  sJ |j                  |k(  sJ |j                  d	k(  sJ t        j                  |      } |       J ~ |       J y )
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        U/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_sparse_tensor.pytest_sparse_tensor_attrsr0   7   s     88	 D I&77iHM"""###$**,,,####!!!$	!444""i///((A---	]	#B44<<    c                  L   t        j                  g dg      j                  } t        j                  g dg dg      j                  }t        j                  g dg dg dg dg      }t        j                  j                  |      }t        j                  |      }|j                         \  }}|j                  sJ t        j                  |      |dz   k(  sJ d }t        j                  | |      sJ t        j                  ||      sJ |j                  j                  sJ y )	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          r/   "test_sparse_coo_tensor_base_objectrF   U   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>>/=999++++r1   c                  D   t        j                  g dg      j                  } t        j                  g d      }t        j                  g d      }t        j                  g dg dg dg dg      }t        j                  j                  |      }t        j                  |      }|j                         \  }}}t        j                  |      |dz   k(  sJ d }t        j                  | |      sJ t        j                  ||      sJ t        j                  ||      sJ y )	Nr3   r   r   r   r   r   r6   r   r   r   r   r   )
r    r!   r7   r8   SparseCSRMatrixr"   r:   r;   r<   r>   	r,   indptrindicesr!   r-   rC   rD   result_indptrresult_indicess	            r/   "test_sparse_csr_matrix_base_objectrO   m   s    88'()++DXXo&Fhh)*GHH	 E &&77>M&A1>1G1G1I.K??=)QU222M>>$,,,>>&-000>>'>222r1   c                     t        j                  g dg      j                  } t        j                  g d      g}t        j                  g d      t        j                  g d      g}t        j                  g dg dg dg dg      }t        j                  j                  |      }t        j                  |      }|j                         \  }}}t        j                  |      |d	z   k(  sJ d }t        j                  | |      sJ t        j                  |d
   |d
         sJ t        j                  |d
   |d
         sJ t        j                  |d   |d         sJ y )Nr3   rH   r   r5   r   r   r6   r   r   r   r   r   r   r5   )
r    r!   r7   r8   SparseCSFTensorr"   r:   r;   r<   r>   rJ   s	            r/   "test_sparse_csf_tensor_base_objectrS      s2   88'()++Dhh'(F

#$G HH	 E &&77>M&A1>1G1G1I.K??=)QU222M>>$,,,>>&)]1%5666>>'!*nQ&7888>>'!*nQ&7888r1   c                 d   d }d }t         j                  j                  dd      d d d d df   }| j                  |      }| j                  t        j                  |            } |||       |j                         }d|d<   | j                  t        j                  |            } |||       y )Nc                 F    | j                  |      sJ | |k(  sJ | |k7  rJ y Nequalsabs     r/   eqz%test_sparse_tensor_equals.<locals>.eq   s+    xx{{AvvF|Fr1   c                 F    | j                  |      rJ | |k(  rJ | |k7  sJ y rV   rW   rY   s     r/   nez%test_sparse_tensor_equals.<locals>.ne   s)    88A;F|Avvr1   
   r   r   g      ?)	   r   )r    randomrandnr"   ascontiguousarraycopy)r   r\   r^   r,   sparse_tensor1sparse_tensor2s         r/   test_sparse_tensor_equalsrg      s    

 99??2q!"cc'*D'88>N'88
T"$N~~&99;DDJ'88
T"$N~~&r1   zdtype_str,arrow_typec                 p   t        j                  |       }t        j                  g dg      j                  j	                  |      }t        j                  g dg dg      j                  }t        j                  g dg dg dg dg      j	                  |      }t
        j                  j                  |      }t
        j                  j                  |      }t        |       |j                         \  }}	|j                  |k(  sJ t        j                  ||      sJ t        j                  ||	      sJ t
        j                  j                  |      }t        |       |j                         \  }}	|j                  |k(  sJ t        j                  ||      sJ t        j                  ||	      sJ y )Nr3   r4   r6   r   r   r   r   )r    dtyper!   r7   astyper8   Tensor
from_numpyr9   r"   reprr<   typer>   from_tensor)
	dtype_str
arrow_typeri   rA   rB   r!   tensorr-   rD   rE   s
             r/   !test_sparse_coo_tensor_from_densers      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>>/=999 &&226:M!.!7!7!9K+++>>-555>>/=999r1   c                    t        j                  |       }t        j                  g dg      j                  j	                  |      }t        j                  g d      }t        j                  g d      }t        j                  g dg dg dg dg      j	                  |      }t
        j                  j                  |      }t
        j                  j                  |      }t        |       |j                         \  }	}
}|j                  |k(  sJ t        j                  ||	      sJ t        j                  ||
      sJ t        j                  ||      sJ t
        j                  j                  |      }t        |       |j                         \  }	}
}|j                  |k(  sJ t        j                  ||	      sJ t        j                  ||
      sJ t        j                  ||      sJ y )Nr3   rH   r6   r   r   r   r   )r    ri   r!   r7   rj   r8   rk   rl   rI   r"   rm   r<   rn   r>   ro   rp   rq   ri   r,   rK   rL   r!   rr   r-   rD   rM   rN   s               r/   !test_sparse_csr_matrix_from_denserv      s   HHYE88'()++2259DXXo&Fhh)*GHH	 
 ve} 
 YY!!%(F &&77>M1>1G1G1I.K+++>>$,,,>>&-000>>'>222 &&226:M1>1G1G1I.K+++>>$,,,>>&-000>>'>222r1   c                    t        j                  |       }t        j                  g dg      j                  j	                  |      }t        j                  g d      g}t        j                  g d      t        j                  g d      g}t        j                  g dg dg dg dg      j	                  |      }t
        j                  j                  |      }t        |       |j                         \  }}	}
|j                  |k(  sJ t        j                  ||      sJ t        j                  |d	   |	d	         sJ t        j                  |d	   |
d	         sJ t        j                  |d
   |
d
         sJ y Nr3   rH   rQ   r6   r   r   r   r   r   r5   )r    ri   r!   r7   rj   r8   rR   r"   rm   r<   rn   r>   )rp   rq   ri   r,   rK   rL   r!   r-   rD   rM   rN   s              r/   'test_sparse_csf_tensor_from_dense_numpyry      sG   HHYE88'()++2259Dhh'(F

#$G HH	 
 ve} 
 &&77>M1>1G1G1I.K+++>>$,,,>>&)]1%5666>>'!*nQ&7888>>'!*nQ&7888r1   c                 <   t        j                  |       }t        j                  g dg      j                  j	                  |      }t        j                  g d      g}t        j                  g d      t        j                  g d      g}t        j                  g dg dg dg dg      j	                  |      }t
        j                  j                  |      }t
        j                  j                  |      }t        |       |j                         \  }	}
}|j                  |k(  sJ t        j                  ||	      sJ t        j                  |d	   |
d	         sJ t        j                  |d	   |d	         sJ t        j                  |d
   |d
         sJ y rx   )r    ri   r!   r7   rj   r8   rk   rl   rR   ro   rm   r<   rn   r>   ru   s               r/   (test_sparse_csf_tensor_from_dense_tensorr{     s]   HHYE88'()++2259Dhh'(F

#$G HH	 
 ve} 
 YY!!%(F &&226:M1>1G1G1I.K+++>>$,,,>>&)]1%5666>>'!*nQ&7888>>'!*nQ&7888r1   c                    t        j                  |       }t        j                  g dg      j                  j	                  |      }t        j                  g dg dg      j                  }d}d}t
        j                  j                  ||||      }t        |       |j                         \  }}	|j                  |k(  sJ t        j                  ||      sJ t        j                  ||	      sJ |j                  |k(  sJ y )Nr5   r   r   r   r   r   r   r   r   r   r5   r   r   r   r   r   r   r   r   r   r   )r    ri   r!   r7   rj   r8   r9   rl   rm   r<   rn   r>   r(   )
rp   rq   ri   r,   coordsr%   r(   r-   rD   rE   s
             r/   &test_sparse_coo_tensor_numpy_roundtripr   1  s    HHYE88'()++2259DXX  	q  EI&&11$2;=M!.!7!7!9K+++>>$,,,>>&-000""i///r1   c                 L   t        j                  |       }t        j                  g dg      j                  j	                  |      }t        j                  g d      }t        j                  g d      }d}d}t
        j                  j                  |||||      }t        |       |j                         \  }	}
}|j                  |k(  sJ t        j                  ||	      sJ t        j                  ||
      sJ t        j                  ||      sJ |j                  |k(  sJ y )Nr3   rH   r6   r   r   )r    ri   r!   r7   rj   r8   rI   rl   rm   r<   rn   r>   r(   )rp   rq   ri   r,   rK   rL   r%   r(   r-   rD   rM   rN   s               r/   &test_sparse_csr_matrix_numpy_roundtripr   F  s    HHYE88'()++2259DXXo&Fhh)*GEI&&11$27DM1>1G1G1I.K+++>>$,,,>>&-000>>'>222""i///r1   c                    t        j                  |       }t        j                  g dg      j                  j	                  |      }t        j                  g d      g}t        j                  g d      t        j                  g d      g}d}d}d}t
        j                  j                  ||||||      }	t        |	       |	j                         \  }
}}|	j                  |k(  sJ t        j                  ||
      sJ t        j                  |d   |d         sJ t        j                  |d   |d         sJ t        j                  |d	   |d	         sJ |	j                  |k(  sJ y )
Nr3   rH   rQ   r6   )r   r5   r   r   r   r5   )r    ri   r!   r7   rj   r8   rR   rl   rm   r<   rn   r>   r(   )rp   rq   ri   r,   rK   rL   
axis_orderr%   r(   r-   rD   rM   rN   s                r/   &test_sparse_csf_tensor_numpy_roundtripr   Z  sK   HHYE88'()++2259Dhh'(F

#$G JEI&&11$272;=M 	1>1G1G1I.K+++>>$,,,>>&)]1%5666>>'!*nQ&7888>>'!*nQ&7888""i///r1   c                    t        j                  |       }t        j                  g dg dg dg dg      j                  |      }d}|j	                  ||      }|j                         }|j                         }|j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ t        j                  ||      sJ y )N)r   r   r`   r   )r      r   r   )r   r   r   r   )r   r   r   r   r   )
r    ri   r!   rj   r"   	to_tensorr<   rn   r(   r>   )	rp   rq   r   ri   r!   r(   r-   rr   result_arrays	            r/   test_dense_to_sparse_tensorr   t  s     HHYEHHl"""$ % &,VE] 
 I&77yIM$$&F??$L+++;;*$$$""i///>>%...r1   zrequires scipy)reasonc                 6   t        j                  |       }t        j                  g d      j                  |      }t        j                  g d      }t        j                  g d      }d}d}t	        |||ff|      }t
        j                  j                  ||      }	|	j                         }
|j                  rJ |	j                  rJ |
j                  rJ |	j                  |k(  sJ |	j                  |k(  sJ |j                  |
j                  k(  sJ t        j                  |j                  |
j                        sJ t        j                  |j                  |
j                        sJ t        j                  |j                  |
j                        sJ | dk(  rK|j                  t         j                         j#                         j                  t         j$                        }n|j#                         }t        j                  ||	j'                         j)                               sJ |j+                          t
        j                  j                  ||      }	|	j                         }
|j                  sJ |	j                  sJ |
j                  sJ y )	Nr}   r~   r   r   r   r%   r(   r   )r    ri   r!   rj   r   r8   r9   
from_scipyto_scipyr=   rn   r(   r>   r,   rowcolfloat32toarrayfloat16r   r<   sum_duplicates)rp   rq   ri   r,   r   r   r%   r(   scipy_matrixr-   out_scipy_matrixdense_arrays               r/   &test_sparse_coo_tensor_scipy_roundtripr     sF    HHYE88&'..u5D
((%
&C
((%
&CEI tc3Z0>L&&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>>,**,<,@,@AAA>>,**,<,@,@AAAD

+335<<RZZH 	 #**,>>+}'>'>'@'I'I'KLLL !&&11,<E 2 GM$--/,,,,----0000r1   c                 
   t        j                  |       }t        j                  g d      j                  |      }t        j                  g d      }t        j                  g d      }d}d}t	        |||f|      }t
        j                  j                  ||      }	|	j                         }
|	j                  |k(  sJ |	j                  |k(  sJ |j                  |
j                  k(  sJ t        j                  |j                  |
j                        sJ t        j                  |j                  |
j                        sJ t        j                  |j                  |
j                        sJ | dk(  rK|j                  t         j                        j!                         j                  t         j"                        }n|j!                         }t        j                  ||	j%                         j'                               sJ y )	Nr3   rH   r6   r   r   r   r   r   )r    ri   r!   rj   r   r8   rI   r   r   rn   r(   r>   r,   rK   rL   r   r   r   r   r<   )rp   rq   ri   r,   rK   rL   r%   r(   sparse_arrayr-   out_sparse_arrayr   s               r/   &test_sparse_csr_matrix_scipy_roundtripr     s    HHYE88&'..u5DXXo&Fhh)*GEItWf5UCL&&11,<E 2 GM$--/+++""i///!1!7!7777>>,++-=-B-BCCC>>,--/?/F/FGGG>>,..0@0H0HIIID

+335<<RZZH 	 #**,>>+}'>'>'@'I'I'KLLLr1   zrequires pydata/sparsec                    t        j                  |       }t        j                  g d      j                  |      }t        j                  g dg dg      }d}d}t	        j
                  |||      }t        j                  j                  ||      }|j                         }	|j                  |k(  sJ |j                  |k(  sJ |j                  |	j                  k(  sJ t        j                  |j                  |	j                        sJ t        j                  |j                  |	j                        sJ t        j                  |j                         |j!                         j#                               sJ y )Nr}   r~   r   r   r   )r,   r   r%   r   )r    ri   r!   rj   sparseCOOr8   r9   from_pydata_sparseto_pydata_sparsern   r(   r>   r,   r   todenser   r<   )
rp   rq   ri   r,   r   r%   r(   r   r-   r   s
             r/   .test_pydata_sparse_sparse_coo_tensor_roundtripr     sQ    HHYE88&'..u5DXX F EI::4eDL&&99,DM : OM$557+++""i///!1!7!7777>>,++-=-B-BCCC>>,--/?/F/FGGG>>,..0'113<<>@ @ @r1   )0pytestr:   r*   numpyr    ImportErrormark
pytestmarkpyarrowr8   scipy.sparser   r   r   int8int16int32int64uint8uint16uint32uint64r   r   float64tensor_type_pairsparametrizerI   SparseCSCMatrixr9   rR   r0   rF   rO   rS   rg   rs   rv   ry   r{   r   r   r   r   skipifr   r   r    r1   r/   <module>r      sF  $  
 # 3
 
72779	8288:	8288:	8288:	8288:	9299;	9299;	9299;	:2::<	:2::<	:2::<  -	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+;</1BC'1 D ='1T 
N+;</1BCM D =M8 J'?@/1BC@ D A@C  #""J#  JJ  Fs3   N6 O O( 6OO	O%$O%(O32O3