a
    oÝEbF5  ã                   @   s\   d dl Zd dlZd dlmZmZmZmZ d dlZ	d dl
mZ d dlmZ G dd„ deƒZdS )é    N)ÚDatetimeTZDtypeÚIntervalDtypeÚPandasDtypeÚPeriodDtype)ÚBaseExtensionTestsc                
   @   s¨  e Zd Zejdd„ dd„ dd„ dd„ dd„ dd„ dd„ gg d	¢d
�dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
ej dddg¡dd„ ƒZdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zejjd(e g d)¢¡ejg d)¢d*d+�ejd,d,d,ejejgd*d+�gg d-¢d.�d/d0„ ƒZd1d2„ Zd3d4„ Zejjd5g d6¢ejg d6¢d7d+�e g d6¢¡gg d8¢d.�d9d:„ ƒZejjd;d<d=d>ejgd?fejd<d=d>ejgd,ejjd@dA�dB�ejd<d=d>ejgd7d+�d?fejd<d=d>ejgd7d+�d?fgg dC¢d.�dDdE„ ƒZej dFd,d?g¡ej dddGg¡dHdI„ ƒƒZej dddGg¡dJdK„ ƒZ dLdM„ Z!dNdO„ Z"dPdQ„ Z#dRdS„ Z$dTdU„ Z%dVdW„ Z&dXdY„ Z'dZd[„ Z(d\d]„ Z)d^d_„ Z*d`da„ Z+dbdc„ Z,ddde„ Z-dfdg„ Z.dhdi„ Z/dGS )jÚBaseSetitemTestsc                 C   s   | j S ©N©Úindex©Úx© r   úc/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/extension/base/setitem.pyÚ<lambda>   ó    zBaseSetitemTests.<lambda>c                 C   s
   t | jƒS r   )Úlistr
   r   r   r   r   r      r   c                 C   s   t d ƒS r   )Úslicer   r   r   r   r      r   c                 C   s   t dt| ƒƒS )Nr   )r   Úlenr   r   r   r   r      r   c                 C   s   t t| ƒƒS r   )Úranger   r   r   r   r   r      r   c                 C   s   t tt| ƒƒƒS r   )r   r   r   r   r   r   r   r      r   c                 C   s   t jt| ƒtd�S ©N©Údtype)ÚnpZonesr   Úboolr   r   r   r   r      r   )r
   zlist[index]Z
null_sliceZ
full_slicer   zlist(range)Úmask)ÚparamsÚidsc                 C   s   |j S )z·
        Fixture for an indexer to pass to obj.loc to get/set the full length of the
        object.

        In some cases, assumes that obj.index is the default RangeIndex.
        )Úparam)ÚselfÚrequestr   r   r   Úfull_indexer   s    zBaseSetitemTests.full_indexerc                 C   s2   |rt  |¡}|d |d< |d |d ks.J ‚d S ©Né   r   ©ÚpdÚSeries©r   ÚdataÚbox_in_seriesr   r   r   Útest_setitem_scalar_series.   s    
z+BaseSetitemTests.test_setitem_scalar_seriesc                 C   sZ   |rt  |¡}| ¡ }|d |d g|ddg< |d |d ksBJ ‚|d |d ksVJ ‚d S r!   )r$   r%   Úcopy©r   r'   r(   Úoriginalr   r   r   Útest_setitem_sequence4   s    
z&BaseSetitemTests.test_setitem_sequencec                 C   sÊ   t  |¡}| ¡ }|d g}|r*| |¡}d}tjt| d¡d�� ||ddg< W d   ƒ n1 sd0    Y  |  ||¡ tjt| d¡d�� ||t	dƒ< W d   ƒ n1 s°0    Y  |  ||¡ d S )Nr   z5cannot set using a {} indexer with a different lengthz	list-like©Úmatchr"   r   é   )
r$   r%   r*   Z_from_sequenceÚpytestÚraisesÚ
ValueErrorÚformatÚassert_series_equalr   )r   r'   Zas_arrayÚserr,   ÚvalueÚxprr   r   r   Ú.test_setitem_sequence_mismatched_length_raises=   s    


**z?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesc                 C   s8   |rt  |¡}| ¡ }g |tjg td�< |  ||¡ d S r   )r$   r%   r*   r   ÚarrayÚintÚassert_equalr+   r   r   r   Útest_setitem_empty_indexerN   s
    
z+BaseSetitemTests.test_setitem_empty_indexerc                 C   sJ   |rt  |¡}|d |ddg< |d |d ks2J ‚|d |d ksFJ ‚d S )Né   r   r"   r#   r&   r   r   r   Ú test_setitem_sequence_broadcastsU   s
    
z1BaseSetitemTests.test_setitem_sequence_broadcastsÚsetterÚlocÚilocc                 C   s8   t  |¡}t||ƒ}|d |d< |d |d ks4J ‚d S r!   )r$   r%   Úgetattr)r   r'   r@   Úarrr   r   r   Útest_setitem_scalar\   s    

z$BaseSetitemTests.test_setitem_scalarc                 C   sB   t  t t|ƒ¡|dœ¡}|d |jd< |jd |d ks>J ‚d S )N©ÚAÚBr"   ©r   rH   )r$   Ú	DataFramer   Úaranger   rA   ©r   r'   Údfr   r   r   Útest_setitem_loc_scalar_mixedc   s    z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ks2J ‚d S )NrH   r"   ©é
   rH   ©r$   rJ   rA   rL   r   r   r   Útest_setitem_loc_scalar_singleh   s    z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ks4J ‚d S )NrF   r"   rO   rQ   rL   r   r   r   Ú,test_setitem_loc_scalar_multiple_homogoneousm   s    z=BaseSetitemTests.test_setitem_loc_scalar_multiple_homogoneousc                 C   sB   t  t t|ƒ¡|dœ¡}|d |jd< |jd |d ks>J ‚d S )NrF   r"   ©r   r"   rI   )r$   rJ   r   rK   r   rB   rA   rL   r   r   r   Útest_setitem_iloc_scalar_mixedr   s    z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ks2J ‚d S )NrH   r"   )rP   r   rO   ©r$   rJ   rB   rA   rL   r   r   r   Útest_setitem_iloc_scalar_singlew   s    z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ks4J ‚d S )NrF   r"   )rP   r"   rO   rV   rL   r   r   r   Ú-test_setitem_iloc_scalar_multiple_homogoneous|   s    z>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneousr   )TTTFFÚbooleanr   T)únumpy-arrayzboolean-arrayzboolean-array-na)r   c                 C   sR   |d d…   ¡ }| g d¢¡}|r6t |¡}t |¡}|d ||< |  ||¡ d S ©Né   ©r   r   r   r0   é   r   ©r*   Útaker$   r%   r<   )r   r'   r   r(   rD   Úexpectedr   r   r   Útest_setitem_mask�   s    


z"BaseSetitemTests.test_setitem_maskc                 C   s¢   t  ddg¡}|rt |¡}tjtdd�� |d ||< W d   ƒ n1 sL0    Y  tj|dd�}tjtdd�� |d ||< W d   ƒ n1 s”0    Y  d S )NTFzwrong lengthr.   r   rY   r   )r   r:   r$   r%   r1   r2   Ú
IndexError©r   r'   r(   r   r   r   r   Útest_setitem_mask_raises“   s    
*z)BaseSetitemTests.test_setitem_mask_raisesc                 C   sn   t jtj|jdd�dd�}d|d d…< t j|dd…< |rBt  |¡}|d ||< |d d… |d k ¡ sjJ ‚d S )Nr   r   rY   Tr0   r\   r   )r$   r:   r   ÚzerosÚshapeÚNAr%   Úallrd   r   r   r   Ú'test_setitem_mask_boolean_array_with_na¡   s    
z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naÚidx)r   r"   r>   ZInt64)r   zinteger-arrayrZ   c                 C   sR   |d d…   ¡ }| g d¢¡}|r6t |¡}t |¡}|d ||< |  ||¡ d S r[   r_   )r   r'   rk   r(   rD   ra   r   r   r   Útest_setitem_integer_array­   s    

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r"   r>   FzGH-31948©Úreason)Zmarks)z
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec                 C   sn   |  ¡ }|r,tj|dd„ tt|ƒƒD ƒd�}d}tjt|d�� |d ||< W d   ƒ n1 s`0    Y  d S )Nc                 S   s   g | ]}t  d ¡‘qS )r^   )ÚtmZrands)Ú.0Ú_r   r   r   Ú
<listcomp>Ï   r   zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>r	   z9Cannot index with an integer indexer containing NA valuesr.   r   )r*   r$   r%   r   r   r1   r2   r3   )r   r'   rk   r(   rD   Úmsgr   r   r   Ú(test_setitem_integer_with_missing_raises½   s     z9BaseSetitemTests.test_setitem_integer_with_missing_raisesÚas_callableNc                    sž   t  |¡}tjt|ƒtd�‰ dˆ d d…< |r:‡ fdd„}nˆ }|rNt||ƒ}n|}|dd… ||< |dd… ||< |d |d ks†J ‚|d	 |d
 ksšJ ‚d S )Nr   Tr>   c                    s   ˆ S r   r   r   ©r   r   r   r   Ý   r   z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>r\   é   r   r"   é   ©r$   r%   r   rf   r   r   rC   )r   r'   ru   r@   r6   Zmask2Útargetr   rv   r   Útest_setitem_mask_alignedÕ   s    
z*BaseSetitemTests.test_setitem_mask_alignedc                 C   st   t  |¡}tjt|ƒtd�}d|d d…< |r8t||ƒ}n|}|d ||< |d |d ks\J ‚|d |d kspJ ‚d S )Nr   Tr>   rP   r   r"   ry   )r   r'   r@   r6   r   rz   r   r   r   Útest_setitem_mask_broadcastî   s    
z,BaseSetitemTests.test_setitem_mask_broadcastc                 C   s’   t  d|i¡}| ¡ }d|d< t  |dgt|ƒ dœ¡}|  ||¡ | ¡ }d|jd d …df< |  ||¡ ||d< t  ||dœ¡}|  ||¡ d S ©NrG   r"   rH   rF   )r$   rJ   r*   r   Úassert_frame_equalrA   ©r   r'   rM   Úresultra   r   r   r   Útest_setitem_expand_columnsý   s    z,BaseSetitemTests.test_setitem_expand_columnsc                 C   sx   t  ddgt|ƒ i¡}| ¡ }||d< t  dgt|ƒ |dœ¡}|  ||¡ | ¡ }||jd d …df< |  ||¡ d S r}   )r$   rJ   r   r*   r~   rA   r   r   r   r   Ú"test_setitem_expand_with_extension  s    z3BaseSetitemTests.test_setitem_expand_with_extensionc                 C   s|   t  ddgt|ƒ i¡}dt|d d… ƒ› dt|ƒ› d�}tjt|d��  |d d… |d< W d   ƒ n1 sn0    Y  d S )	NrG   r"   zLength of values \(r\   z$\) does not match length of index \(z\)r.   rH   )r$   rJ   r   r1   r2   r3   )r   r'   rM   r8   r   r   r   Ú!test_setitem_frame_invalid_length  s    ÿÿz2BaseSetitemTests.test_setitem_frame_invalid_lengthc                 C   sP   t j|d d… ddgd�}t j| ddg¡|jd�}|d |d< |  ||¡ d S )Nr>   )r   r   rT   r	   r"   )r$   r%   r`   r
   r5   )r   r'   r6   ra   r   r   r   Útest_setitem_tuple_index!  s    z)BaseSetitemTests.test_setitem_tuple_indexc                 C   sV   |d d…   ¡ }| g d¢¡}|r6t |¡}t |¡}|d |d d…< |  ||¡ d S )Nr\   r]   r   r0   r_   )r   r'   r(   rD   ra   r   r   r   Útest_setitem_slice'  s    

z#BaseSetitemTests.test_setitem_slicec                 C   sŒ   |d d…   ¡ }tj|g d¢d�}tj| g d¢¡|jd�}|  ¡ }|d |jd d…< |  ||¡ |  ¡ }|d |jd d…< |  ||¡ d S )Nr\   )ÚaÚbÚcÚdÚer	   r]   r   r0   rˆ   )r*   r$   r%   r`   r
   rB   r<   rA   )r   r'   rD   Úsra   r€   r   r   r   Útest_setitem_loc_iloc_slice1  s    z,BaseSetitemTests.test_setitem_loc_iloc_slicec                 C   sN   |d d… }t  t¡�$ |d d… |d d…< W d   ƒ n1 s@0    Y  d S )Nr\   r>   r"   )r1   r2   r3   ©r   r'   rD   r   r   r   Ú)test_setitem_slice_mismatch_length_raises>  s    z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d…   ¡ }|dd … |d d…< |  ||dd … ¡ d S )Nr\   éûÿÿÿ)r*   Zassert_extension_array_equalr�   r   r   r   Útest_setitem_slice_arrayC  s    z)BaseSetitemTests.test_setitem_slice_arrayc                 C   sN   |d d…   ¡ }t t¡�  |ddg |d< W d   ƒ n1 s@0    Y  d S )Nr\   r   r"   )r*   r1   r2   r3   r�   r   r   r   Ú&test_setitem_scalar_key_sequence_raiseH  s    z7BaseSetitemTests.test_setitem_scalar_key_sequence_raisec                 C   sL   |  ¡ }|d d … }|d |d< |d |d ks4J ‚|d |d ksHJ ‚d S r!   )Úview)r   r'   Zview1Zview2r   r   r   Útest_setitem_preserves_viewsM  s
    z-BaseSetitemTests.test_setitem_preserves_viewsc                 C   sP   t  dt  |¡i¡ }}t j|jd�}||ƒ}|d |j|df< |  ||¡ d S )Nr'   r	   )r$   rJ   r%   r
   rA   r~   )r   r'   r    rM   ra   r€   Úkeyr   r   r   Ú,test_setitem_with_expansion_dataframe_columnV  s
    z=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnc                 C   s\   t j|dd�}t j|jtdd�}||ƒ}||j|< t j| t¡|jdtd�}|  ||¡ d S )Nr'   ©Úname)r
   r   r—   )r
   r—   r   )r$   r%   r
   ÚobjectrA   Zastyper5   )r   r'   r    r6   r€   r”   ra   r   r   r   Útest_setitem_series`  s    
ÿz$BaseSetitemTests.test_setitem_seriesc                 C   sê   t  d|i¡}t|jt jjjƒ}|rRt|jtt	t
tfƒsRtjjdd�}|j |¡ t  d|i¡}| ¡ }||jd d …< |  ||¡ |jd d… |jd d…< |  ||¡ |j|jd d …< |  ||¡ |jd d… |jd d…< |  ||¡ d S )NrG   z$Goes through split path, loses dtyperm   éÿÿÿÿ)r$   rJ   Ú
isinstanceZ_mgrÚcoreZ	internalsZArrayManagerr   r   r   r   r   r1   ÚmarkÚxfailÚnodeZ
add_markerr*   rB   r~   Úvalues)r   r'   r   rM   Zusing_array_managerr�   Úorigr   r   r   Útest_setitem_frame_2d_valueso  s$    ÿz-BaseSetitemTests.test_setitem_frame_2d_valuesc                 C   sF   t j|dd�}t t|ƒ¡}t |d¡}|| }|d= |  ||¡ d S )Nr'   r–   r"   )r$   r%   r   rK   r   Údeleter5   )r   r'   r6   Ztakerra   r   r   r   Útest_delitem_series�  s    z$BaseSetitemTests.test_delitem_seriesc                 C   s€   d}t jttf|d�� ||d< W d   ƒ n1 s40    Y  t jttf|d�� ||d d …< W d   ƒ n1 sr0    Y  d S )NÚ r.   r   )r1   r2   r3   Ú	TypeError)r   r'   Zinvalid_scalarrs   r   r   r   Útest_setitem_invalid˜  s
    &z%BaseSetitemTests.test_setitem_invalid)0Ú__name__Ú
__module__Ú__qualname__r1   Zfixturer    r)   r-   r9   r=   r?   r�   ZparametrizerE   rN   rR   rS   rU   rW   rX   r   r:   r$   rh   rb   re   rj   rl   r   rž   rt   r{   r|   r�   r‚   rƒ   r„   r…   rŒ   rŽ   r�   r‘   r“   r•   r™   r¢   r¤   r§   r   r   r   r   r      s”   ù	ö
		
ýù	
	$ý
ÿúö

	
	
r   )Únumpyr   r1   Zpandas.core.dtypes.dtypesr   r   r   r   Zpandasr$   Zpandas._testingZ_testingro   Z pandas.tests.extension.base.baser   r   r   r   r   r   Ú<module>   s   