o
    Ö­jQ  ã                   @   sš   d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
 ddlmZ ee	gZe jdd„ ƒZej de¡G d	d
„ d
ƒƒZej de¡G dd„ dƒƒZdS )é    N)Úassert_allcloseÚassert_equal)Ú	csr_arrayÚ	dok_arrayÚSparseEfficiencyWarningé   )Útoarrayc                 c   sF   � dV  t | dƒr| jsdS | j ¡ }d| _|  ¡  t|| jdƒ dS )zDChecks that sorted indices property is retained through an operationNÚhas_sorted_indicesFz'Expected sorted indices, found unsorted)Úhasattrr	   ÚindicesÚcopyÚsort_indicesr   )ÚXr   © r   ú_/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_indexing1d.pyÚcheck_remains_sorted   s   €
r   Ú	spcreatorc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestGetSet1Dc                 C   s”   t  g d¢¡}||ƒ}|jd }t| |ƒD ]1}t||d f  ¡ ||d f ƒ t|d |f  ¡ |d |f ƒ t|d d |f  ¡ |d d |f ƒ qd S )N©é   é   r   r   )ÚnpÚarrayÚshapeÚranger   r   )Úselfr   ÚDÚAÚNÚjr   r   r   Útest_None_index   s   
$ýzTestGetSet1D.test_None_indexc                 C   sþ  |t  d¡ dd¡ƒ}|d jdksJ ‚|ddd…f jdks!J ‚|d ddd…f jd	ks/J ‚|d
 jdks8J ‚|d jd	ksAJ ‚|d jdksJJ ‚|d jdksSJ ‚|d dd d …f jdksaJ ‚|dd d d …f jdksoJ ‚|dd d …d f jdks}J ‚tjtdd�� |d  W d   ƒ n1 s“w   Y  tjtdd�� |d dd…d df  W d   ƒ n1 s´w   Y  tjtdd�� |dd…dd …d f  W d   ƒ n1 sÖw   Y  tjtdd�� |dd …dd d f  W d   ƒ d S 1 søw   Y  d S )Né   r   r   )r   é   r   r   r"   ©r   )r   r   )Nr   r"   )Nr   r"   N)Nr   )r   r   )r   N)r   r   zOnly 1D or 2D arrays©Úmatch)Nr"   r   NN)r   ÚarangeÚreshapeÚndimr   ÚpytestÚraisesÚ
IndexError©r   r   r   r   r   r   Útest_getitem_shape%   s.   
ÿÿÿ"ÿzTestGetSet1D.test_getitem_shapec              	   C   sÔ   t  g d¢¡}||ƒ}|jd }t| |ƒD ]}t|| || ƒ qdD ]}tjtdd�� | |¡ W d   ƒ n1 s=w   Y  q$|d dksKJ ‚tjtdd�� | d¡ W d   ƒ d S 1 scw   Y  d S )	Nr   r   )r   éüÿÿÿz index (.*) out of (range|bounds)r$   )r   r   ©r   )	r   r   r   r   r   r)   r*   r+   Ú__getitem__)r   r   r   r   r   r   Úijr   r   r   Útest_getelement=   s   
ÿ€"ÿzTestGetSet1D.test_getelementc              
   C   sâ   t j}|d|d�}t j ¡ �Y}| td¡ |dƒ|d< |dƒ|d< |dƒ|d< |d	ƒ|d
< d|d< |dƒ|d< |dƒ|d< dD ]}tjtdd�� | 	|d¡ W d   ƒ n1 sYw   Y  q?W d   ƒ d S 1 sjw   Y  d S )N©r!   ©Údtypeú2Changing the sparsity structure of .* is expensiver   r   r   g      "@é   é   éþÿÿÿé	   é   )i÷ÿÿÿr#   )é   éòÿÿÿ©r<   )é   zout of (range|bounds)r$   ç     À^@)
r   Úfloat64ÚtestingÚsuppress_warningsÚfilterr   r)   r*   r+   Ú__setitem__)r   r   r5   r   Úsupr1   r   r   r   Útest_setelementO   s*   þÿ€ÿ"òzTestGetSet1D.test_setelementN)Ú__name__Ú
__module__Ú__qualname__r    r-   r2   rG   r   r   r   r   r      s
    
r   c                   @   sÌ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1S )2ÚTestSlicingAndFancy1Dc              	   C   sr   t  g d¢¡}||ƒ}t|d  ¡ |d ƒ dD ]}tjtdd�� | |¡ W d   ƒ n1 s1w   Y  qd S )Nr   r   )©r   r   ©r   z"out of (range|bounds)|many indicesr$   )r   r   r   r   r)   r*   r+   r0   )r   r   r   r   r1   r   r   r   Útest_get_array_indexj   s   ÿ€ÿz*TestSlicingAndFancy1D.test_get_array_indexc              
   C   s&  t j}|d|d�}t j ¡ �{}| td¡ |dƒ|t  d¡< |dƒ|t  d¡< t| ¡ g d¢ƒ dD ]}t	j
td	d
�� | |d¡ W d   ƒ n1 sLw   Y  q2ddg d¢t  g d¢¡fD ]!}d}t	j
t|d
�� | d|¡ W d   ƒ n1 s{w   Y  q_W d   ƒ d S 1 sŒw   Y  d S )Nr3   r4   r6   g      @é   g       @)r   r   r   r   r   r   r"   r   r   r   r   r   )r>   )r=   zindex .* out of (range|bounds)r$   r@   r   rL   )r   r"   r   ú&Trying to assign a sequence to an itemr   )r   rA   rB   rC   rD   r   r   r   r   r)   r*   r+   rE   Ú
ValueError)r   r   r5   r   rF   r1   ÚvÚmsgr   r   r   Útest_set_array_indexs   s.   þÿ€ÿ€þ"óz*TestSlicingAndFancy1D.test_set_array_indexc                 C   sf   t |dtjd�dd… jtjƒ t |dtjd�ddd… jtjƒ t |dtjd�d d … jtjƒ d S )N©é
   r4   r   r;   )rO   r   r"   )r   r   Úint16r5   Úint32Úint64)r   r   r   r   r   Útest_dtype_preservation‹   s    "$z-TestSlicingAndFancy1D.test_dtype_preservationc                 C   s  t  d¡}||ƒ}t|d d … |d d …  ¡ ƒ t|dd… |dd…  ¡ ƒ t  g d¢¡}||ƒ}t|dd… |dd…  ¡ ƒ t  g d¢¡}||ƒ}t|dd… |dd…  ¡ ƒ t|dd … |dd …  ¡ ƒ t|d d … |d d …  ¡ ƒ t|td ƒ |td ƒ  ¡ ƒ d S )	Ng      I@r"   r;   )	r   r   rO   r   r   r   r   r   r   r   r   )r   r   r   r   r   r9   )r   r&   r   r   r   Úslice)r   r   ÚBr   ÚCr   ÚEÚFr   r   r   Útest_get_1d_slice�   s   
"z'TestSlicingAndFancy1D.test_get_1d_slicec                 C   sä  t  d¡}||ƒ}t|d |d ƒ t|d |d ƒ t|t  d¡ |d ƒ t|d d …  ¡ |d d … ƒ t|dd…  ¡ |dd… ƒ t|ddd…  ¡ |ddd… ƒ tt  d¡t  d¡d ƒ}t||  ¡ |dd… ƒ t j}|d d… |d	d… |dd … |dd d… |d
d… |dd… |ddd… |dd d… |d dd… dd	|d d … |d	d… dddt  d¡t  d¡g}t|ƒD ]/\}}|| }	|| }
|
j	dkrÚt|	|
t
|ƒƒ qÀ|	jdkrå|
jdkråqÀt|	 ¡ |
t
|ƒƒ qÀd S )Né2   r"   éÿÿÿÿr9   r;   r!   r   r   r   é   é   r7   r   éûÿÿÿéýÿÿÿr   )r   r&   r   r   r   r[   Úint8Ús_Ú	enumerater   ÚreprÚsize)r   r   r\   r   Úsrh   Úslicesr   ÚaÚxÚyr   r   r   Útest_slicing_idx_slice¢   s4   
"*$ü
÷z,TestSlicingAndFancy1D.test_slicing_idx_slicec                 C   sB   t  d¡}||ƒ}t|d  ¡ |d ƒ t|d  ¡ |d ƒ d S )Nra   .).)r   r&   r   r   ©r   r   r\   r   r   r   r   Útest_ellipsis_1d_slicingÇ   s   
z.TestSlicingAndFancy1D.test_ellipsis_1d_slicingc                 C   s¦   |dƒ}t  d¡}t j ¡ �4}| td¡ ||fD ]!}d|dd…< d|dd…< d|dd…< d|dd …< d|dd d	…< qW d   ƒ n1 sEw   Y  t| ¡ |ƒ d S )
N©r;   r6   r   r   r   r"   r:   r   rb   )r   ÚzerosrB   rC   rD   r   r   r   )r   r   r   r\   rF   r]   r   r   r   Útest_slice_scalar_assignÐ   s    
þûûz.TestSlicingAndFancy1D.test_slice_scalar_assignc              	   C   sž   d}t dƒt d ddƒt ddƒfD ]<}||ƒ}tj ¡ �}| td¡ d||< W d   ƒ n1 s0w   Y  t |¡}d||< d	|›�}t| ¡ ||d
� qd S )NrU   r   rV   r   r;   r9   r6   r   zidx=)Úerr_msg)	r[   r   rB   rC   rD   r   ru   r   r   )r   r   r   Úidxr   rF   r\   rS   r   r   r   Útest_slice_assign_2à   s    þ
û

õz)TestSlicingAndFancy1D.test_slice_assign_2c                 C   s  |dƒ}t j ¡ �y}| td¡ d|d< d|d< d|d< d|d< |d }|d d … |d d …< t|d d …  ¡ |d d …  ¡ ƒ |d }|d d… |d d …< tt  d¡|d  | ¡ ƒ |d }|dd … |d d…< t|dd …  ¡ |d d…  ¡ ƒ W d   ƒ d S 1 s…w   Y  d S )	Nrt   r6   r"   r   r   r   rV   rb   )r   rB   rC   rD   r   r   r   ru   )r   r   r\   rF   r   r   r   r   Útest_self_self_assignmentð   s(   þ"$"ìz/TestSlicingAndFancy1D.test_self_self_assignmentc                 C   s®   |dƒ}t  g d¢¡}ddg}t j ¡ �9}| td¡ d|d< d|d< || |d d …< t| ¡ |ƒ t|ƒ|d d…< t| ¡ d d… |ƒ W d   ƒ d S 1 sPw   Y  d S )	Nr/   )rV   r   r?   r   r"   r   r6   r;   r   r8   )	r   r   rB   rC   rD   r   r   r   r   )r   r   r\   ÚexpectedÚblockrF   r   r   r   Útest_slice_assignment	  s   þ"õz+TestSlicingAndFancy1D.test_slice_assignmentc           
      C   sÊ  |dƒ}t  dt¡}t j}|d d… |dd… |dd … |dd d… |ddd… |dd d	… |d dd… d
d|d d … |dd… dd	dt  d¡t  d¡g}t j ¡ �F}| t	d¡ t
|ƒD ]\}}|||< |||< t| ¡ |t|ƒƒ q]tdddƒ|ddd…< tdddƒ|ddd…< t| ¡ |ƒ W d   ƒ n1 s›w   Y  ttdƒƒ}	tjtdd�� | d
|	¡ W d   ƒ n1 s¾w   Y  tjtdd�� | td ƒ|	¡ W d   ƒ d S 1 sÞw   Y  d S )Nrt   r;   r"   r   r   r7   rb   r   r9   r   re   rf   r6   rV   éd   rP   r$   zcould not be broadcast together)r   ru   Úfloatrh   r   rg   rB   rC   rD   r   ri   r   r   rj   r   Úlistr)   r*   rQ   rE   r[   )
r   r   r   r\   rh   rm   rF   r   rn   Útoobigr   r   r   Útest_set_slice  s8   *$ýþôÿ"ÿz$TestSlicingAndFancy1D.test_set_slicec                 C   s8   |t  d¡ƒ}|dƒ}||d d…< t| ¡ g d¢ƒ d S )Nr   ©r"   r"   )r   r   r   )r   Úonesr   r   )r   r   r   r\   r   r   r   Útest_assign_empty9  s   z'TestSlicingAndFancy1D.test_assign_emptyc                 C   s:   |dt jd�}t|ddg jt jƒ t|g  jt jƒ d S )Nrƒ   r4   F)r   rW   r   r5   r,   r   r   r   Ú#test_dtype_preservation_empty_indexB  s   z9TestSlicingAndFancy1D.test_dtype_preservation_empty_indexc                 C   s�   |t  d¡ƒ}tjtttfdd�� | d¡ W d   ƒ n1 s!w   Y  tjtttfdd�� | d¡ W d   ƒ d S 1 sAw   Y  d S )Nr;   ú,Index dimension must be 1 or 2|only integersr$   Úfooú&tuple index out of range|only integers)r"   rˆ   )r   ru   r)   r*   r+   rQ   Ú	TypeErrorr0   r,   r   r   r   Útest_bad_indexG  s   þüþ"üz$TestSlicingAndFancy1D.test_bad_indexc                 C   sÀ  t  d¡ d¡}||ƒ}t|ddg  ¡ |ddg ƒ t|dddgf  ¡ |dddgf ƒ t|dddgf  ¡ |dddgf ƒ t|t  d¡ddgf  ¡ |dddgf ƒ t|dt  ddg¡f  ¡ |dddgf ƒ t|t  d¡t  ddg¡f  ¡ |dddgf ƒ t|d d …g d¢f  ¡ |d d …g d¢f ƒ t|dd	…d
gf  ¡ |dd	…d
gf ƒ t|dd	…ddgf  ¡ |dd	…ddgf ƒ t|dd	…t  ddg¡f  ¡ |dd	…ddgf ƒ t|ddgdf  ¡ |ddgdf ƒ t|ddgdf  ¡ |ddgdf ƒ t|t  ddg¡df  ¡ |ddgdf ƒ t|ddgt  d¡f  ¡ |ddgdf ƒ t|t  ddg¡t  d¡f  ¡ |ddgdf ƒ t|ddgd d …f  ¡ |ddgd d …f ƒ t|ddgdd…f  ¡ |ddgdd…f ƒ t|t  ddg¡dd…f  ¡ |ddgdd…f ƒ tt|ddgdd	gf ƒ|ddgdd	gf ƒ tt|ddgddgf ƒ|ddgddgf ƒ tt|t  ddg¡ddgf ƒ|ddgddgf ƒ tt|ddgt  ddg¡f ƒ|ddgddgf ƒ tt|t  ddg¡t  ddg¡f ƒ|ddgddgf ƒ t|dgdggdd	gf  ¡ |dgdggdd	gf ƒ t|dgdgdggddgf  ¡ |dgdgdggddgf ƒ t|t  dgdgdgg¡ddgf  ¡ |dgdgdggddgf ƒ t|dgdgdggt  ddg¡f  ¡ |dgdgdggddgf ƒ t|t  dgdgdgg¡t  ddg¡f  ¡ |dgdgdggddgf ƒ t|ddg  ¡ |ddg ƒ t|ddg  ¡ |ddg ƒ t|t  ddg¡  ¡ |ddg ƒ t|ddgd d …f d d …dd	gf  ¡ |ddgd d …f d d …dd	gf ƒ t|ddgd d …f d d …ddgf  ¡ |ddgd d …f d d …ddgf ƒ t|t  ddg¡d d …f d d …t  ddg¡f  ¡ |ddgd d …f d d …ddgf ƒ t|d d …ddgf dd	gd d …f  ¡ |d d …ddgf dd	gd d …f ƒ t|d d …ddgf ddgd d …f  ¡ |d d …ddgf ddgd d …f ƒ t|d d …t  ddg¡f t  ddg¡d d …f  ¡ |d d …ddgf ddgd d …f ƒ d S )Nra   )r;   rV   r   r   rb   r"   re   )r"   r7   r   rb   r   r:   r.   r7   rf   r9   )r   r&   r'   r   r   r   rr   r   r   r   Útest_fancy_indexing_2darrayT  sŽ   &&,,2.*.4&&,,2..4...ÿ.ÿ4ÿ6þ$þ$þ*þ$HÿHÿ2"þHÿHÿ2"þz1TestSlicingAndFancy1D.test_fancy_indexing_2darrayc                 C   sÖ  t  d¡}||ƒ}t|dg  ¡ |dg ƒ t|ddg  ¡ |ddg ƒ t|ddg  ¡ |ddg ƒ t|t  d¡ |d ƒ t|t  ddg¡  ¡ |ddg ƒ t|t  d¡ |t  d¡ ƒ t  dgdgg¡}t||  ¡ || ƒ t  dgdgd	gg¡}t||  ¡ || ƒ t|ddg  ¡ |ddg ƒ t|ddg  ¡ |ddg ƒ t|t  ddg¡  ¡ |ddg ƒ t|g d
¢ ddg  ¡ |g d
¢ ddg ƒ t|g d¢ ddg  ¡ |g d¢ ddg ƒ d S )Nra   r   r   r"   re   rb   r;   rf   r9   )r   r;   r"   r7   )rb   re   r"   r7   r.   )r   r&   r   r   r   )r   r   r\   r   Úindr   r   r   Útest_fancy_indexing±  s*   
$$ÿÿz)TestSlicingAndFancy1D.test_fancy_indexingc           	      C   sZ  t j d¡ t  d¡}||ƒ}t jt jjdddd�td�}tt|| ƒ|| ƒ tt||dk ƒ||dk ƒ t j	dtd�}t j	dtd�}d	|d
< t j	dtd�}d	|d< d}t
jt|d�� | |¡ W d   ƒ n1 smw   Y  t
jt|d�� | |¡ W d   ƒ n1 s‰w   Y  t
jt|d�� | |¡ W d   ƒ d S 1 s¦w   Y  d S )NéÒ  ra   r   r"   ©rk   r4   r:   é3   Trb   z3bool index .* has shape|boolean index did not matchr$   )r   ÚrandomÚseedr&   r   ÚrandintÚboolr   r   ru   r)   r*   r+   r0   )	r   r   r\   r   ÚIÚZ1ÚZ2ÚZ3rS   r   r   r   Útest_fancy_indexing_booleanÐ  s*   
ÿÿ"ÿz1TestSlicingAndFancy1D.test_fancy_indexing_booleanc                 C   s  t j d¡ t  d¡}||ƒ}t jt jjdddd�td�}t|ƒ}tt	|| ƒ|| ƒ tt	||dk ƒ||dk ƒ t jt jjdddd�td�}t|ƒ}t
jtd	d
�� | |¡ W d   ƒ n1 sdw   Y  t
jtdd
�� | |df¡ W d   ƒ d S 1 sƒw   Y  d S )Nr�   rd   r   r"   r�   r4   r:   é<   z%bool index .* has shape|only integersr$   r‰   r   )r   r’   r“   r&   r   r”   r•   r   r   r   r)   r*   r+   r0   )r   r   r\   r   r   ÚXspÚYÚYspr   r   r   Ú"test_fancy_indexing_sparse_booleané  s   
ÿ"ÿz8TestSlicingAndFancy1D.test_fancy_indexing_sparse_booleanc                 C   s\   |t  ddg¡ƒ}tjtdd�� | dt  ddg¡¡ W d   ƒ d S 1 s'w   Y  d S )Nr   r   rP   r$   r"   )r   r   r)   r*   rQ   rE   )r   r   Úmatr   r   r   Útest_fancy_indexing_seq_assignþ  s   "ÿz4TestSlicingAndFancy1D.test_fancy_indexing_seq_assignc                 C   sœ   t  d¡}d|dd…< d|d< ||ƒ}t  dgd ¡}tt|| ƒ|| ƒ t jg td�}tt|| ƒ|| ƒ t jg d¢td�}tt|| ƒ|| ƒ d S )	Nra   r   r   r:   é   Fr4   )r   r   r"   r   r   ©r   r&   r   r   r   Úint)r   r   r\   r   ÚKÚJr   r   r   Útest_fancy_indexing_empty  s   
z/TestSlicingAndFancy1D.test_fancy_indexing_emptyc                 C   sX   |t  d¡ƒ}d}tjtttf|d�� | dd¡ W d   ƒ d S 1 s%w   Y  d S )Nr;   r‡   r$   rˆ   r"   )r   ru   r)   r*   r+   rQ   rŠ   rE   )r   r   r   rS   r   r   r   Útest_bad_index_assign  s
   "ÿz+TestSlicingAndFancy1D.test_bad_index_assignc              
   C   sÈ   d}g d¢t d ddƒt d¡t ddƒt ddƒfD ]I}||ƒ}t |¡}tj ¡ �*}| td	¡ d
||< t|ƒ� d
||< W d   ƒ n1 sFw   Y  W d   ƒ n1 sUw   Y  t	| 
¡ |ƒ qd S )Nrt   )r"   r   r   rV   r   r   r;   r9   r"   r6   r   )r[   r   r&   ru   rB   rC   rD   r   r   r   r   )r   r   ÚMr   r   r\   rF   r   r   r   Útest_fancy_indexing_set  s&   ÿ
þ

ÿ€úôz-TestSlicingAndFancy1D.test_fancy_indexing_setc           
   
   C   s¾  |dƒ}|dƒ}g d¢}d}t  |¡}t j ¡ �½}| td¡ t|ƒ�2 || ||< d}tjt	|d�� | 
|¡ W d   ƒ n1 sCw   Y  || ||< W d   ƒ n1 sXw   Y  t|d d…  ¡ | ¡ ƒ |jdksqJ ‚|dƒ}t|ƒ� dd	g|d
d…< W d   ƒ n1 sŒw   Y  t| ¡ g d¢ƒ |dƒ}t  d¡}t|ƒ� ||fD ]
}	g d¢|	g d¢< q¬W d   ƒ n1 sÁw   Y  t| ¡ |ƒ W d   ƒ d S 1 sØw   Y  d S )Nr/   rM   )r   r   r"   r6   z3too many indices for array|tuple index out of ranger$   r   rV   rd   r   )r   rV   rd   r   r   )r   r;   rO   )r   r   rB   rC   rD   r   r   r)   r*   r+   r0   r   r   r   ru   )
r   r   r   r\   Úi0Úi1Úi2rF   rS   r]   r   r   r   Útest_sequence_assignment+  sD   
þ
ÿû
ÿ

ÿÿ"æz.TestSlicingAndFancy1D.test_sequence_assignmentc                 C   st   t  d¡}d|d< d|ddg< ||ƒ}t  dgd ¡}d||< t| ¡ |ƒ t jg td�}d||< t| ¡ |ƒ d S )	Nra   r   r"   r   rO   Fé*   r4   r£   )r   r   r\   r   r¥   r   r   r   Útest_fancy_assign_emptyO  s   
z-TestSlicingAndFancy1D.test_fancy_assign_emptyN)rH   rI   rJ   rN   rT   rZ   r`   rq   rs   rv   ry   rz   r}   r‚   r…   r†   r‹   rŒ   rŽ   rš   rŸ   r¡   r§   r¨   rª   r®   r°   r   r   r   r   rK   e   s2    	%		]$rK   )Ú
contextlibr)   Únumpyr   Únumpy.testingr   r   Úscipy.sparser   r   r   Útest_arithmetic1dr   Úformats_for_index1dÚcontextmanagerr   ÚmarkÚparametrizer   rK   r   r   r   r   Ú<module>   s    
K