o
    Û­jã:  ã                   @   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/html/CropPilot/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)ÚnpÚonesr   Úboolr   r   r   r	   r
      s    )r   zlist[index]Ú
null_sliceÚ
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)Úautousec                 C   sT   |j r&|j}|j d¡d dkrd S |jj d¡d }|dkr(t d¡ d S d S 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#   Ú
defined_inr   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    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s!J ‚|d |d ks+J ‚d S r0   )r2   r3   Úcopy©r   r/   r5   Úoriginalr   r   r	   Útest_setitem_sequenceD   s   
z&BaseSetitemTests.test_setitem_sequencec                 C   sÐ   t  |¡}| ¡ }|d g}|r|j||jd�}d}tjt| d¡d�� ||ddg< W d   ƒ n1 s5w   Y  t	 
||¡ tjt| d¡d�� ||tdƒ< W d   ƒ n1 s[w   Y  t	 
||¡ d S )	Nr   r   z5cannot set using a {} indexer with a different lengthz	list-like©Úmatchr,   r   é   )r2   r3   r7   Ú_from_sequencer   r(   r-   Ú
ValueErrorÚformatÚtmÚassert_series_equalr   )r   r/   Úas_arrayÚserr9   Ú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   )r2   r3   r7   r   ÚarrayÚintrA   Úassert_equalr8   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sJ ‚|d |d ks#J ‚d S )Né   r   r,   r1   r4   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sJ ‚d S r0   )r2   r3   Úgetattr)r   r/   rN   Ú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   rV   )r2   Ú	DataFramer   Úaranger   rO   ©r   r/   Údfr   r   r	   Útest_setitem_loc_scalar_mixeds   ó   z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ksJ ‚d S )NrV   r,   ©é
   rV   ©r2   rX   rO   rZ   r   r   r	   Útest_setitem_loc_scalar_singlex   ó   z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ksJ ‚d S )NrT   r,   r^   r`   rZ   r   r   r	   Ú,test_setitem_loc_scalar_multiple_homogoneous}   ó   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 )NrT   r,   ©r   r,   rW   )r2   rX   r   rY   r   rP   rO   rZ   r   r   r	   Útest_setitem_iloc_scalar_mixed‚   r]   z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ksJ ‚d S )NrV   r,   )r_   r   r^   ©r2   rX   rP   rO   rZ   r   r   r	   Útest_setitem_iloc_scalar_single‡   rb   z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ksJ ‚d S )NrT   r,   )r_   r,   r^   rg   rZ   r   r   r	   Ú-test_setitem_iloc_scalar_multiple_homogoneousŒ   rd   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   r=   é   r   ©r7   Útaker2   r3   rA   rJ   )r   r/   r   r5   rR   Ú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 lengthr;   r   rj   r   )r   rH   r2   r3   r(   r-   Ú
IndexError©r   r/   r5   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   rj   Tr=   rm   r   )r2   rH   r   ÚzerosÚshapeÚNAr3   Úallru   r   r   r	   Ú'test_setitem_mask_boolean_array_with_na±   s   
 z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naÚidx)r   r,   rL   ÚInt64)r   zinteger-arrayrk   c                 C   sR   |d d…   ¡ }| g d¢¡}|rt |¡}t |¡}|d ||< t ||¡ d S rl   rp   )r   r/   r|   r5   rR   rr   r   r   r	   Útest_setitem_integer_array½   s   

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_seriesr   r,   rL   FzGH-31948)Úreason)Ú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 valuesr;   r   )r7   r2   r3   r   r   r(   r-   r?   )r   r/   r|   r5   rR   Ú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   TrL   c                    s   ˆ S r   r   r   ©r   r   r	   r
   í   s    z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>rm   é   r   r,   é   ©r2   r3   r   rw   r   r   rQ   )r   r/   rˆ   rN   rD   Ú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   TrL   r_   r   r,   rŒ   )r   r/   rN   rD   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 ©NrU   r,   rV   rT   )r2   rX   r7   r   rA   Úassert_frame_equalrO   ©r   r/   r[   Úresultrr   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‘   )r2   rX   r   r7   rA   r’   rO   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 )	NrU   r,   zLength of values \(rm   z$\) does not match length of index \(z\)r;   rV   )r2   rX   r   r(   r-   r?   )r   r/   r[   rF   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 )NrL   )r   r   re   r   r,   )r2   r3   rq   r   rA   rB   )r   r/   rD   rr   r   r   r	   Útest_setitem_tuple_index1  s   z)BaseSetitemTests.test_setitem_tuple_indexc                 C   sV   |d d…   ¡ }| g d¢¡}|rt |¡}t |¡}|d |d d…< t ||¡ d S )Nrm   rn   r   r=   rp   )r   r/   r5   rR   rr   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 )Nrm   )ÚaÚbÚcÚdÚer   rn   r   r=   rœ   )	r7   r2   r3   rq   r   rP   rA   rJ   rO   )r   r/   rR   Úsrr   r”   r   r   r	   Útest_setitem_loc_iloc_sliceA  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 )Nrm   rL   r,   )r(   r-   r?   ©r   r/   rR   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 )Nrm   éûÿÿÿ)r7   rA   Úassert_extension_array_equalr¡   r   r   r	   Útest_setitem_slice_arrayS  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 )Nrm   r   r,   )r7   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sJ ‚|d |d ks$J ‚d S r0   )Úview)r   r/   Úview1Ú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   )r2   rX   r3   r   rO   rA   r’   )r   r/   r   r[   rr   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/   rL   )rL   r/   r   r   )r2   rX   rO   rA   r’   r3   r   )r   r/   Úna_valuer[   rr   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   )r2   r3   r   ÚobjectrO   ÚastyperA   rB   )r   r/   r   rD   r”   r«   rr   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 s^J ‚|jd d… |jd d…< t ||¡ d S )NrU   r   éÿÿÿÿ)r2   rX   Ú
isinstanceÚ_mgrÚcoreÚ	internalsÚArrayManagerÚoptionsÚmodeÚcopy_on_writeÚarraysr7   rP   rA   r’   Úvalues)r   r/   r[   Úusing_array_managerÚusing_copy_on_writeÚ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,   )r2   r3   r   rY   r   ÚdeleterA   rB   )r   r/   rD   Útakerrr   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Ú r;   r   )r(   r-   r?   r.   )r   r/   Ú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 ¡ s2J ‚|jdd d …f |d k ¡ sCJ ‚d S )N)rš   r›   r,   r   )r7   r2   rX   rO   r½   rz   )r   r/   r9   r[   r   r   r	   Útest_setitem_2d_values½  s
   *"&z'BaseSetitemTests.test_setitem_2d_values)4Ú__name__Ú
__module__r'   r(   Úfixturer   r+   r    r6   r:   rG   rK   rM   ÚmarkÚparametrizerS   r\   ra   rc   rf   rh   ri   r   rH   r2   ry   rs   rv   r{   r~   r   Ú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(   Úpandasr2   Úpandas._testingÚ_testingrA   r   r   r   r   r	   Ú<module>   s
    