U
    -eD                     @   s  d dl Z d dlZd dlZd dlZd dlZzd dlmZm	Z	 W n e
k
rX   dZ	dZY nX zd dlZW n e
k
r~   dZY nX de fde fde fde fde fde fd	e fd
e fde fde fde fgZe jdejejejejgdd Zdd Zdd Z dd Z!e jdejejejejg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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ejejejge jded(d) Z*e jj+e	 d*d+e jded,d- Z,e jj+e d*d+e jded.d/ Z-e jj+e d0d+e jded1d2 Z.dS )3    N)
csr_matrix
coo_matrixi1i2i4i8u1u2Zu4u8f2Zf4Zf8sparse_tensor_typec                 C   s   t ddddddgddddddgddddddgddddddgg}d}| ||}|jdks`t|jd	ksnt|j|jks~t|jst|d|d kst|j	|kst|j
dkstt|}| d k	st~| d kstd S )
N   r                  xy   )nparrayfrom_dense_numpyndimAssertionErrorsizeshapeZ
is_mutableZdim_name	dim_namesZnon_zero_lengthweakrefref)r   datar   sparse_tensorwr r$   a/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_sparse_tensor.pytest_sparse_tensor_attrs4   s&    

r&   c                  C   s   t ddddddggj} t ddddddgddddddggj}t ddddddgddddddgddddddgddddddgg}tj|}t|}| \}}|j	st
t||d kst
d }t | |st
t ||st
|jjst
d S 	Nr   r   r   r   r   r   r      )r   r   TpaSparseCOOTensorr   sysgetrefcountto_numpyhas_canonical_formatr   array_equalflagsc_contiguous)expected_dataexpected_coordsr   r"   nresult_dataresult_coordsr$   r$   r%   "test_sparse_coo_tensor_base_objectR   s(    

r8   c            	      C   s   t ddddddggj} t dddddg}t ddddddg}t ddddddgddddddgddddddgddddddgg}tj|}t|}| \}}}t||d kst	d }t 
| |st	t 
||st	t 
||st	d S Nr   r   r   r   r   r   r   )r   r   r)   r*   SparseCSRMatrixr   r,   r-   r.   r   r0   	r!   indptrindicesr   r"   r5   r6   result_indptrresult_indicesr$   r$   r%   "test_sparse_csr_matrix_base_objectj   s"    
r@   c            	      C   s:  t ddddddggj} t dddddgg}t ddddgt ddddddgg}t ddddddgddddddgddddddgddddddgg}tj|}t|}| \}}}t||d kst	d }t 
| |st	t 
|d |d st	t 
|d |d st	t 
|d |d s6t	d S r'   )r   r   r)   r*   SparseCSFTensorr   r,   r-   r.   r   r0   r;   r$   r$   r%   "test_sparse_csf_tensor_base_object   s(    
rB   c                 C   s   dd }dd }t jddd d d d df }| |}| t |}||| | }d|d	< | t |}||| d S )
Nc                 S   s*   |  |st| |kst| |kr&td S Nequalsr   abr$   r$   r%   eq   s    z%test_sparse_tensor_equals.<locals>.eqc                 S   s*   |  |rt| |krt| |ks&td S rC   rD   rF   r$   r$   r%   ne   s    z%test_sparse_tensor_equals.<locals>.ne
   r   r   g      ?)	   r   )r   randomZrandnr   Zascontiguousarraycopy)r   rI   rJ   r!   Zsparse_tensor1Zsparse_tensor2r$   r$   r%   test_sparse_tensor_equals   s     

rO   zdtype_str,arrow_typec           
      C   sL  t | }t ddddddggj|}t ddddddgddddddggj}t ddddddgddddddgddddddgddddddgg|}tj|}tj	|}t
| | \}}	|j|kstt ||stt ||	sttj|}t
| | \}}	|j|ks$tt ||s6tt ||	sHtd S r'   )r   dtyper   r)   astyper*   Tensor
from_numpyr+   r   reprr.   typer   r0   from_tensor)
	dtype_str
arrow_typerP   r3   r4   r   tensorr"   r6   r7   r$   r$   r%   !test_sparse_coo_tensor_from_dense   s6    
 rZ   c                 C   sv  t | }t ddddddggj|}t dddddg}t ddddddg}t ddddddgddddddgddddddgddddddgg|}tj|}tj	|}t
| | \}	}
}|j|kstt ||	stt ||
stt ||s
ttj|}t
| | \}	}
}|j|ks<tt ||	sNtt ||
s`tt ||srtd S r9   )r   rP   r   r)   rQ   r*   rR   rS   r:   r   rT   r.   rU   r   r0   rV   rW   rX   rP   r!   r<   r=   r   rY   r"   r6   r>   r?   r$   r$   r%   !test_sparse_csr_matrix_from_dense   s6    
 r\   c                 C   sB  t | }t ddddddggj|}t dddddgg}t ddddgt ddddddgg}t ddddddgddddddgddddddgddddddgg|}tj|}t| |	 \}}	}
|j
|kstt ||stt |d |	d s
tt |d |
d s$tt |d |
d s>td S r'   )r   rP   r   r)   rQ   r*   rA   r   rT   r.   rU   r   r0   )rW   rX   rP   r!   r<   r=   r   r"   r6   r>   r?   r$   r$   r%   'test_sparse_csf_tensor_from_dense_numpy   s,    
 r]   c                 C   sN  t | }t ddddddggj|}t dddddgg}t ddddgt ddddddgg}t ddddddgddddddgddddddgddddddgg|}tj|}tj	|}t
| | \}	}
}|j|kstt ||	stt |d |
d stt |d |d s0tt |d |d sJtd S r'   )r   rP   r   r)   rQ   r*   rR   rS   rA   rV   rT   r.   rU   r   r0   r[   r$   r$   r%   (test_sparse_csf_tensor_from_dense_tensor  s.    
 r^   c           
   	   C   s   t | }t ddddddggj|}t ddddddgddddddggj}d}d	}tj||||}t| |	 \}}	|j
|kstt ||stt ||	st|j|kstd S )
Nr(   r   r   r   r   r   r   r   r   r   )r   rP   r   r)   rQ   r*   r+   rS   rT   r.   rU   r   r0   r   )
rW   rX   rP   r!   coordsr   r   r"   r6   r7   r$   r$   r%   &test_sparse_coo_tensor_numpy_roundtrip.  s"    
 ra   c                 C   s   t | }t ddddddggj|}t dddddg}t ddddddg}d}d	}tj|||||}t| |	 \}	}
}|j
|kstt ||	stt ||
stt ||st|j|kstd S )
Nr   r   r   r   r   r   r   r_   r   )r   rP   r   r)   rQ   r*   r:   rS   rT   r.   rU   r   r0   r   )rW   rX   rP   r!   r<   r=   r   r   r"   r6   r>   r?   r$   r$   r%   &test_sparse_csr_matrix_numpy_roundtripC  s"    
  rb   c              	   C   s  t | }t ddddddggj|}t dddddgg}t ddddgt ddddddgg}d	}d
}d}tj||||||}	t|	 |		 \}
}}|	j
|kstt ||
stt |d |d stt |d |d stt |d |d st|	j|kstd S )Nr   r   r   r   r   r   r   r(   )r   r(   r_   r   )r   rP   r   r)   rQ   r*   rA   rS   rT   r.   rU   r   r0   r   )rW   rX   rP   r!   r<   r=   Z
axis_orderr   r   r"   r6   r>   r?   r$   r$   r%   &test_sparse_csf_tensor_numpy_roundtripW  s,    
  rc   c           	   	   C   s   t | }t ddddgddddgddddgddddgg|}d}|||}| }| }|j|kspt|j|ks~t|j	|kstt 
||std S )Nr   r   rL      r   r   )r   rP   r   rQ   r   	to_tensorr.   rU   r   r   r0   )	rW   rX   r   rP   r   r   r"   rY   Zresult_arrayr$   r$   r%   test_dense_to_sparse_tensorq  s     



rf   zrequires scipy)reasonc                 C   s  t | }t ddddddg|}t ddddddg}t ddddddg}d}d	}t|||ff|d
}tjj||d}	|	 }
|j	rt
|	j	rt
|
j	rt
|	j|kst
|	j|kst
|j|
jkst
t |j|
jst
t |j|
jst
t |j|
jst
| dkr2|t j t j}n| }t ||	  sTt
|  tjj||d}	|	 }
|j	st
|	j	st
|
j	st
d S )Nr(   r   r   r   r   r   r   r_   r   r   r   r   )r   rP   r   rQ   r   r*   r+   
from_scipyto_scipyr/   r   rU   r   r0   r!   rowcolfloat32toarrayfloat16re   r.   Zsum_duplicates)rW   rX   rP   r!   rl   rm   r   r   Zscipy_matrixr"   Zout_scipy_matrixdense_arrayr$   r$   r%   &test_sparse_coo_tensor_scipy_roundtrip  sB    




rr   c                 C   s4  t | }t ddddddg|}t dddddg}t ddddddg}d}d	}t|||f|d
}tjj||d}	|	 }
|	j	|kst
|	j|kst
|j|
jkst
t |j|
jst
t |j|
jst
t |j|
jst
| dkr|t j t j}n| }t ||	  s0t
d S )Nr   r   r   r   r   r   r   r_   r   rh   ri   r   )r   rP   r   rQ   r   r*   r:   rj   rk   rU   r   r   r0   r!   r<   r=   rn   ro   rp   re   r.   )rW   rX   rP   r!   r<   r=   r   r   sparse_arrayr"   out_sparse_arrayrq   r$   r$   r%   &test_sparse_csr_matrix_scipy_roundtrip  s,    

ru   zrequires pydata/sparsec           
   	   C   s   t | }t ddddddg|}t ddddddgddddddgg}d}d	}tj|||d
}tjj||d}|	 }	|j
|kst|j|kst|j|	jkstt |j|	jstt |j|	jstt | |  std S )Nr(   r   r   r   r   r   r   r_   r   )r!   r`   r   ri   )r   rP   r   rQ   sparseZCOOr*   r+   Zfrom_pydata_sparseZto_pydata_sparserU   r   r   r0   r!   r`   Ztodensere   r.   )
rW   rX   rP   r!   r`   r   r   rs   r"   rt   r$   r$   r%   .test_pydata_sparse_sparse_coo_tensor_roundtrip  s*    


rw   )/Zpytestr,   r   numpyr   Zpyarrowr*   Zscipy.sparser   r   ImportErrorrv   Zint8Zint16Zint32Zint64Zuint8Zuint16Zuint32Zuint64rp   rn   Zfloat64Ztensor_type_pairsmarkZparametrizer:   ZSparseCSCMatrixr+   rA   r&   r8   r@   rB   rO   rZ   r\   r]   r^   ra   rb   rc   rf   Zskipifrr   ru   rw   r$   r$   r$   r%   <module>   s   















 
 




*