o
    Ti9                     @   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   c/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/extension/base/setitem.py<lambda>   s    zBaseSetitemTests.<lambda>c                 C   s
   t | jS r   )listr   r   r   r   r	   r
      s   
 c                 C   s   t d S r   )slicer   r   r   r	   r
      s    c                 C   s   t dt| S )Nr   )r   lenr   r   r   r	   r
      s    c                 C   s   t t| S r   )ranger   r   r   r   r	   r
      s    c                 C   s   t tt| S r   )r   r   r   r   r   r   r	   r
      s    c                 C   s   t jt| tdS Ndtype)npZonesr   boolr   r   r   r	   r
      s    )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   s6   |j r|j}|jdd dkrd S td d S d S )N[r   test_is_immutablez4__setitem__ test not applicable with immutable dtype)_is_immutablenodenamesplitpytestskip)r   r   r   r   r   r   r	   skip_if_immutable&   s   z"BaseSetitemTests.skip_if_immutablec                 C   sh   |j jr"tt |d |d< W d    d S 1 sw   Y  d S |d |d< |d |d ks2J d S )Nr      )r   r   r!   raises	TypeError)r   datar   r   r	   r   0   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_series8   s   
z+BaseSetitemTests.test_setitem_scalar_seriesc                 C   sZ   |rt |}| }|d |d g|ddg< |d |d ks!J |d |d ks+J d S r(   )r*   r+   copyr   r'   r-   originalr   r   r	   test_setitem_sequence>   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 s2w   Y  t	|| tjt|dd ||t
d< W d    n1 sXw   Y  t	|| d S )Nr   z5cannot set using a {} indexer with a different lengthz	list-likematchr$   r      )r*   r+   r/   Z_from_sequencer!   r%   
ValueErrorformattmassert_series_equalr   )r   r'   Zas_arrayserr1   valuexprr   r   r	   .test_setitem_sequence_mismatched_length_raisesG   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+   r/   r   arrayintr8   assert_equalr0   r   r   r	   test_setitem_empty_indexerX   s
   
z+BaseSetitemTests.test_setitem_empty_indexerc                 C   sJ   |rt |}|d |ddg< |d |d ksJ |d |d ks#J d S )N   r   r$   r)   r,   r   r   r	    test_setitem_sequence_broadcasts_   s
   
z1BaseSetitemTests.test_setitem_sequence_broadcastssetterlocilocc                 C   s8   t |}t||}|d |d< |d |d ksJ d S r(   )r*   r+   getattr)r   r'   rD   arrr   r   r	   test_setitem_scalarf   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   rL   )r*   	DataFramer   aranger   rE   r   r'   dfr   r   r	   test_setitem_loc_scalar_mixedm      z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrL   r$   
   rL   r*   rN   rE   rP   r   r   r	   test_setitem_loc_scalar_singler      z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrJ   r$   rT   rV   rP   r   r   r	   ,test_setitem_loc_scalar_multiple_homogoneousw      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 )NrJ   r$   r   r$   rM   )r*   rN   r   rO   r   rF   rE   rP   r   r   r	   test_setitem_iloc_scalar_mixed|   rS   z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t d|i}|d |jd< |jd |d ksJ d S )NrL   r$   )rU   r   rT   r*   rN   rF   rE   rP   r   r   r	   test_setitem_iloc_scalar_single   rX   z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t ||d}|d |jd< |jd |d ksJ d S )NrJ   r$   )rU   r$   rT   r]   rP   r   r   r	   -test_setitem_iloc_scalar_multiple_homogoneous   rZ   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}|rt|}t|}|d ||< t|| d S N   r   r   r   r5      r   r/   taker*   r+   r8   r@   )r   r'   r   r-   rH   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 s&w   Y  tj|dd}tjtdd |d ||< W d    d S 1 sKw   Y  d S )NTFzwrong lengthr3   r   r`   r   )r   r>   r*   r+   r!   r%   
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< |r!t |}|d ||< |d d |d k s5J d S )Nr   r   r`   Tr5   rc   r   )r*   r>   r   zerosshapeNAr+   allrk   r   r   r	   'test_setitem_mask_boolean_array_with_na   s   
 z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidx)r   r$   rB   ZInt64)r   zinteger-arrayra   c                 C   sR   |d d   }|g d}|rt|}t|}|d ||< t|| d S rb   rf   )r   r'   rr   r-   rH   rh   r   r   r	   test_setitem_integer_array   s   

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r$   rB   FzGH-31948)reason)Zmarks)z
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec                 C   sp   |  }|rtj|dd tt|D d}d}tjt|d |d ||< W d    d S 1 s1w   Y  d S )Nc                 S   s   g | ]}t d | qS )d   )chr).0ir   r   r	   
<listcomp>   s    zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>r   z9Cannot index with an integer indexer containing NA valuesr3   r   )r/   r*   r+   r   r   r!   r%   r6   )r   r'   rr   r-   rH   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 }|r't||}n|}|dd ||< |dd ||< |d |d ksCJ |d	 |d
 ksMJ d S )Nr   TrB   c                    s    S r   r   r   r   r   r	   r
      s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>rc      r   r$      r*   r+   r   rm   r   r   rG   )r   r'   r|   rD   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< |rt||}n|}|d ||< |d |d ks.J |d |d ks8J d S )Nr   TrB   rU   r   r$   r   )r   r'   rD   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 NrK   r$   rL   rJ   )r*   rN   r/   r   r8   assert_frame_equalrE   r   r'   rQ   resultrh   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*   rN   r   r/   r8   r   rE   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    d S 1 s8w   Y  d S )	NrK   r$   zLength of values \(rc   z$\) does not match length of index \(z\)r3   rL   )r*   rN   r   r!   r%   r6   )r   r'   rQ   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 )NrB   )r   r   r[   r   r$   )r*   r+   rg   r   r8   r9   )r   r'   r:   rh   r   r   r	   test_setitem_tuple_index+  s   z)BaseSetitemTests.test_setitem_tuple_indexc                 C   sV   |d d   }|g d}|rt|}t|}|d |d d< t|| d S )Nrc   rd   r   r5   rf   )r   r'   r-   rH   rh   r   r   r	   test_setitem_slice1  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 )Nrc   )abcder   rd   r   r5   r   )	r/   r*   r+   rg   r   rF   r8   r@   rE   )r   r'   rH   srh   r   r   r   r	   test_setitem_loc_iloc_slice;  s   z,BaseSetitemTests.test_setitem_loc_iloc_slicec                 C   sP   |d d }t t |d d |d d< W d    d S 1 s!w   Y  d S )Nrc   rB   r$   )r!   r%   r6   r   r'   rH   r   r   r	   )test_setitem_slice_mismatch_length_raisesH  s   "z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d   }|dd  |d d< t||dd   d S )Nrc   )r/   r8   Zassert_extension_array_equalr   r   r   r	   test_setitem_slice_arrayM  s   z)BaseSetitemTests.test_setitem_slice_arrayc                 C   sP   |d d   }tt |ddg |d< W d    d S 1 s!w   Y  d S )Nrc   r   r$   )r/   r!   r%   r6   r   r   r   r	   &test_setitem_scalar_key_sequence_raiseR  s   "z7BaseSetitemTests.test_setitem_scalar_key_sequence_raisec                 C   sL   |  }|d d  }|d |d< |d |d ksJ |d |d ks$J d S r(   )view)r   r'   Zview1Zview2r   r   r	   test_setitem_preserves_viewsW  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*   rN   r+   r   rE   r8   r   )r   r'   r   rQ   rh   r   keyr   r   r	   ,test_setitem_with_expansion_dataframe_column`  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'   rB   )rB   r'   r   r   )r*   rN   rE   r8   r   r+   r   )r   r'   Zna_valuerQ   rh   r   r   r	   test_setitem_with_expansion_rowj  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   objectrE   Zastyper8   r9   )r   r'   r   r:   r   r   rh   r   r   r	   test_setitem_seriesx  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|| |sZ|sZ|jj
d |u sZJ |jd d |jd d< t|| d S )NrK   r   )r*   rN   
isinstanceZ_mgrcoreZ	internalsZArrayManageroptionsmodeZcopy_on_writeZarraysr/   rF   r8   r   values)r   r'   rQ   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   rO   r   deleter8   r9   )r   r'   r:   Ztakerrh   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 sw   Y  t jttf|d ||d d < W d    d S 1 s:w   Y  d S )N r3   r   )r!   r%   r6   r&   )r   r'   Zinvalid_scalarrz   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 s2J |jdd d f |d k sCJ d S )N)r   r   r$   r   )r/   r*   rN   rE   r   rp   )r   r'   r1   rQ   r   r   r	   test_setitem_2d_values  s
   *"&z'BaseSetitemTests.test_setitem_2d_values)4__name__
__module____qualname__r!   Zfixturer   r#   r   r.   r2   r=   rA   rC   markZparametrizerI   rR   rW   rY   r\   r^   r_   r   r>   r*   ro   ri   rl   rq   rs   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_testingr8   r   r   r   r   r	   <module>   s
    