a
    Pf:                     @   s6   d dl Zd dlZd dlZd dlmZ G dd dZdS )    Nc                
   @   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ejdddd Z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/d0d1ejdddejejgd0d1gg d2d3d4d5 Zd6d7 Zd8d9 Zejjd:g d;ejg d;d<d1eg d;gg d=d3d>d? Zejjd@dAdBdCejgdDfejdAdBdCejgdejjdEdFdGejdAdBdCejgd<d1dDfejdAdBdCejgd<d1dDfgg dHd3dIdJ Z ejdKddDgejdddLgdMdN Z!ejdddLgdOdP Z"dQdR Z#dSdT Z$dUdV Z%dWdX Z&dYdZ Z'd[d\ Z(d]d^ Z)d_d` Z*dadb Z+dcdd Z,dedf Z-dgdh Z.didj Z/dkdl Z0dmdn Z1dodp Z2dqdr Z3dLS )sBaseSetitemTestsc                 C   s   | j S Nindexx r   \/var/www/ai-form-bot/venv/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_indexerT)Zautousec                 C   sL   |j rH|j}|jdd dkr$d S |jjdd }|dkrHtd d S )N[r   test_is_immutable.r   z4__setitem__ test not applicable with immutable dtype)_is_immutablenodenamesplitfunction__qualname__pytestskip)r   r   r   r    Z
defined_inr   r   r	   skip_if_immutable&   s    z"BaseSetitemTests.skip_if_immutablec                 C   sd   |j jr@tt |d |d< W d    q`1 s40    Y  n |d |d< |d |d ks`J d S )Nr      )r   r   r%   raises	TypeError)r   datar   r   r	   r   6   s
    ,z"BaseSetitemTests.test_is_immutablec                 C   s2   |rt |}|d |d< |d |d ks.J d S Nr(   r   pdSeriesr   r+   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+   r1   originalr   r   r	   test_setitem_sequenceD   s    
z&BaseSetitemTests.test_setitem_sequencec                 C   s   t |}| }|d g}|r0|j||jd}d}tjt|dd ||ddg< W d    n1 sj0    Y  t	
|| tjt|dd ||td< W d    n1 s0    Y  t	
|| d S )	Nr   r   z5cannot set using a {} indexer with a different lengthz	list-likematchr(   r      )r.   r/   r3   Z_from_sequencer   r%   r)   
ValueErrorformattmassert_series_equalr   )r   r+   Zas_arrayserr5   valuexprr   r   r	   .test_setitem_sequence_mismatched_length_raisesM   s    

**z?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesc                 C   s8   |rt |}| }g |tjg td< t|| d S r   )r.   r/   r3   r   arrayintr<   assert_equalr4   r   r   r	   test_setitem_empty_indexer^   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-   r0   r   r   r	    test_setitem_sequence_broadcastse   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+   rH   arrr   r   r	   test_setitem_scalarl   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   rP   )r.   	DataFramer   aranger   rI   r   r+   dfr   r   r	   test_setitem_loc_scalar_mixeds   s    z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ks2J d S )NrP   r(   
   rP   r.   rR   rI   rT   r   r   r	   test_setitem_loc_scalar_singlex   s    z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ks4J d S )NrN   r(   rW   rY   rT   r   r   r	   ,test_setitem_loc_scalar_multiple_homogoneous}   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 )NrN   r(   r   r(   rQ   )r.   rR   r   rS   r   rJ   rI   rT   r   r   r	   test_setitem_iloc_scalar_mixed   s    z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ks2J d S )NrP   r(   )rX   r   rW   r.   rR   rJ   rI   rT   r   r   r	   test_setitem_iloc_scalar_single   s    z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ks4J d S )NrN   r(   )rX   r(   rW   r^   rT   r   r   r	   -test_setitem_iloc_scalar_multiple_homogoneous   s    z>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneousr   )TTTFFbooleanr   )numpy-arrayzboolean-arrayzboolean-array-na)r   c                 C   sR   |d d   }|g d}|r6t|}t|}|d ||< t|| d S N   r   r   r   r9      r   r3   taker.   r/   r<   rD   )r   r+   r   r1   rL   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 s0    Y  d S )NTFzwrong lengthr7   r   ra   r   )r   rB   r.   r/   r%   r)   
IndexErrorr   r+   r1   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   ra   Tr9   rd   r   )r.   rB   r   zerosshapeNAr/   allrl   r   r   r	   'test_setitem_mask_boolean_array_with_na   s    
z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidx)r   r(   rF   ZInt64)r   zinteger-arrayrb   c                 C   sR   |d d   }|g d}|r6t|}t|}|d ||< t|| d S rc   rg   )r   r+   rs   r1   rL   ri   r   r   r	   test_setitem_integer_array   s    

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r(   rF   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 )d   )chr).0ir   r   r	   
<listcomp>   r   zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>r   z9Cannot index with an integer indexer containing NA valuesr7   r   )r3   r.   r/   r   r   r%   r)   r:   )r   r+   rs   r1   rL   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sJ |d	 |d
 ksJ d S )Nr   TrF   c                    s    S r   r   r   r   r   r	   r
      r   z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>rd      r   r(      r.   r/   r   rn   r   r   rK   )r   r+   r}   rH   r>   Zmask2targetr   r~   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   TrF   rX   r   r(   r   )r   r+   rH   r>   r   r   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}t|| | }d|jd d df< t|| ||d< t ||d}t|| d S NrO   r(   rP   rN   )r.   rR   r3   r   r<   assert_frame_equalrI   r   r+   rU   resultri   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}t|| | }||jd d df< t|| d S r   )r.   rR   r   r3   r<   r   rI   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 )	NrO   r(   zLength of values \(rd   z$\) does not match length of index \(z\)r7   rP   )r.   rR   r   r%   r)   r:   )r   r+   rU   r@   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< t|| d S )NrF   )r   r   r\   r   r(   )r.   r/   rh   r   r<   r=   )r   r+   r>   ri   r   r   r	   test_setitem_tuple_index1  s    z)BaseSetitemTests.test_setitem_tuple_indexc                 C   sV   |d d   }|g d}|r6t|}t|}|d |d d< t|| d S )Nrd   re   r   r9   rg   )r   r+   r1   rL   ri   r   r   r	   test_setitem_slice7  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< t|| |  }|d |jd d< t|| d S )Nrd   )abcder   re   r   r9   r   )	r3   r.   r/   rh   r   rJ   r<   rD   rI   )r   r+   rL   sri   r   r   r   r	   test_setitem_loc_iloc_sliceA  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 )Nrd   rF   r(   )r%   r)   r:   r   r+   rL   r   r   r	   )test_setitem_slice_mismatch_length_raisesN  s    z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d   }|dd  |d d< t||dd   d S )Nrd   )r3   r<   Zassert_extension_array_equalr   r   r   r	   test_setitem_slice_arrayS  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 )Nrd   r   r(   )r3   r%   r)   r:   r   r   r   r	   &test_setitem_scalar_key_sequence_raiseX  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_views]  s
    z-BaseSetitemTests.test_setitem_preserves_viewsc                 C   sP   t dt |i }}t j|jd}||}|d |j|df< t|| d S )Nr   r   )r.   rR   r/   r   rI   r<   r   )r   r+   r   rU   ri   r   keyr   r   r	   ,test_setitem_with_expansion_dataframe_columnf  s
    z=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnc                 C   s   t d|d d i}|d |jd< t d|d d i}t|| ||jd< t dt j|d |d |g|jdi}t|| d S )Nr+   r(   )r(   r+   rF   )rF   r+   r   r   )r.   rR   rI   r<   r   r/   r   )r   r+   Zna_valuerU   ri   r   r   r	   test_setitem_with_expansion_rowp  s    
 z0BaseSetitemTests.test_setitem_with_expansion_rowc                 C   s\   t j|dd}t j|jtdd}||}||j|< t j|t|jdtd}t|| d S )Nr+   r!   )r   r   r!   )r   r!   r   )r.   r/   r   objectrI   Zastyper<   r=   )r   r+   r   r>   r   r   ri   r   r   r	   test_setitem_series~  s    
z$BaseSetitemTests.test_setitem_seriesc                 C   s   t d|i}t|jt jjj}t jjj	}|jj
d }| }| |jd d < t|| |jd d  |jd d< t|| |j|jd d < t|| |s|s|jj
d |u sJ |jd d |jd d< t|| d S )NrO   r   )r.   rR   
isinstanceZ_mgrcoreZ	internalsZArrayManageroptionsmodeZcopy_on_writeZarraysr3   rJ   r<   r   values)r   r+   rU   Zusing_array_managerZusing_copy_on_writeZblk_dataorigr   r   r	   test_setitem_frame_2d_values  s    
z-BaseSetitemTests.test_setitem_frame_2d_valuesc                 C   sF   t j|dd}tt|}t|d}|| }|d= t|| d S )Nr+   r   r(   )r.   r/   r   rS   r   deleter<   r=   )r   r+   r>   Ztakerri   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 r7   r   )r%   r)   r:   r*   )r   r+   Zinvalid_scalarr{   r   r   r	   test_setitem_invalid  s
    &z%BaseSetitemTests.test_setitem_invalidc                 C   s   |  }t||d}|jddgd d f j|jddgd d f< |jdd d f |d k sdJ |jdd d f |d k sJ d S )N)r   r   r(   r   )r3   r.   rR   rI   r   rq   )r   r+   r5   rU   r   r   r	   test_setitem_2d_values  s
    *"z'BaseSetitemTests.test_setitem_2d_values)4__name__
__module__r$   r%   Zfixturer   r'   r   r2   r6   rA   rE   rG   markZparametrizerM   rV   rZ   r[   r]   r_   r`   r   rB   r.   rp   rj   rm   rr   rt   r   Zxfailr|   r   r   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   r%   Zpandasr.   Zpandas._testingZ_testingr<   r   r   r   r   r	   <module>   s   