o
    Û­jÊQ  ã                   @   sz   d dl m Z  d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ G dd„ dƒZdS )é    )ÚdatetimeN)Úusing_string_dtype)Ú
ArrowDtypeÚ	DataFrameÚIndexÚSeriesÚStringDtypeÚbdate_range)Úopsc                	   @   sh  e Zd Zej d¡ej dejej	ej
g¡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ej dejej	ej
g¡dd„ ƒZd d!„ Zej dejejg¡d"d#„ ƒZej d$ejed%d%gƒfejed&d&gƒfejed&d&gƒfg¡d'd(„ ƒZ ejj!e"ƒ d)d*�d+d,„ ƒZ#d-d.„ Z$ejj!d/d*�d0d1„ ƒZ%d2d3„ Z&d4S )5ÚTestSeriesLogicalOpsz4ignore:Downcasting object dtype arrays:FutureWarningÚbool_opc                 C   s†   t tddd�td�}tj|d d d…< | ¡ }| |d ¡}|||d k ||d kƒ}|||d k ||d kƒ}d	||< t ||¡ d S )
Nz1/1/2000é
   )Úperiods©Údtypeé   r   é	   é   F)	r   r	   ÚobjectÚnpÚnanÚisnaÚfillnaÚtmÚassert_series_equal)Úselfr   ÚserÚmaskÚfilledÚresultÚexpected© r!   úa/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/series/test_logical_ops.pyÚtest_bool_operators_with_nas   s   z1TestSeriesLogicalOps.test_bool_operators_with_nasc                 C   sp   t dƒ}tg d¢|d�}tg d¢|d�}tg td�}||@ }| ¡ }t ||¡ ||B }| ¡ }t ||¡ d S )NÚbca©TFT©Úindex©FFFr   )Úlistr   r   Ú
sort_indexr   r   )r   r'   Ús_tftÚs_fffÚs_emptyÚresr    r!   r!   r"   Ú,test_logical_operators_bool_dtype_with_empty&   s   zATestSeriesLogicalOps.test_logical_operators_bool_dtype_with_emptyc                 C   sä   t tdƒdd�}t dgd ƒ}t dgd ƒ}||@ }t tdƒdd�}t ||¡ ||B }t tddƒdd�}t ||¡ t dgd dd�}||@ }t g d¢dd�}t ||¡ | tj¡| tj¡B }t g d	¢d
d�}t ||¡ d S )Né   Úint64r   r   é   é   Úint8©r   r3   r   r3   )r3   r3   r   r   Úint32)r   Úranger   r   Úastyper   Úint16r6   )r   Ús_0123Ús_3333Ús_4444r.   r    Ús_1111r!   r!   r"   Ú/test_logical_operators_int_dtype_with_int_dtype6   s    zDTestSeriesLogicalOps.test_logical_operators_int_dtype_with_int_dtypec                 C   sV   t tdƒdd�}|d@ }t dgd ƒ}t ||¡ |d@ }t g d¢ƒ}t ||¡ d S )Nr0   r1   r   r   r3   r5   )r   r7   r   r   )r   r:   r.   r    r!   r!   r"   Ú0test_logical_operators_int_dtype_with_int_scalarN   s   zETestSeriesLogicalOps.test_logical_operators_int_dtype_with_int_scalarc              	   C   sv  t tdƒdd�}d}d}tjt|d�� |tj@  W d   ƒ n1 s#w   Y  tjt|d�� |d@  W d   ƒ n1 s>w   Y  d}tjt|d��% tjt	|d�� |g d	¢@  W d   ƒ n1 sew   Y  W d   ƒ n1 stw   Y  tjt|d�� |t 
g d	¢¡@  W d   ƒ n1 s”w   Y  tjt|d�� |t g d
¢ƒ@  W d   ƒ d S 1 s´w   Y  d S )Nr0   r1   r   úLLogical ops \(and, or, xor\) between Pandas objects and dtype-less sequencesú7Cannot perform.+with a dtyped.+array and scalar of type©Úmatchç…ëQ¸	@z unsupported operand type.+for &:)çš™™™™™¹?r0   rD   r   )rE   r0   g…ëQ¸	Àr   )r   r7   ÚpytestÚraisesÚ	TypeErrorr   r   r   Úassert_produces_warningÚFutureWarningÚarray)r   r:   Úwarn_msgÚmsgr!   r!   r"   Ú+test_logical_operators_int_dtype_with_floatZ   s.   ÿÿ
ÿÿ€ÿÿ"ÿz@TestSeriesLogicalOps.test_logical_operators_int_dtype_with_floatc              	   C   sÎ   t dgd dd�}d}d}tjt|d�� |d@  W d   ƒ n1 s#w   Y  tjtd	d��. tjt|d�� |g d
¢@  W d   ƒ n1 sHw   Y  W d   ƒ d S W d   ƒ d S 1 s`w   Y  d S )Nr3   r0   r4   r   r@   z=Cannot perform 'and_' with a dtyped.+array and scalar of typerB   Úazunsupported operand.+for &)rO   ÚbÚcÚd)r   rF   rG   rH   r   rI   rJ   )r   r=   rL   rM   r!   r!   r"   Ú)test_logical_operators_int_dtype_with_strq   s   ÿ
ÿÿÿ"ÿz>TestSeriesLogicalOps.test_logical_operators_int_dtype_with_strc                 C   sà   t tdƒdd�}t dgd ƒ}|d@ }t ||¡ d}tjt|d�� |dg@ }W d   ƒ n1 s2w   Y  t ||¡ tjt|d�� |d@ }W d   ƒ n1 sSw   Y  t ||¡ |dA }t g d¢ƒ}t ||¡ d S )	Nr0   r1   r   Fr@   rB   )F)FTTT)r   r7   r   r   rI   rJ   )r   r:   r    r   rL   r!   r!   r"   Ú*test_logical_operators_int_dtype_with_bool€   s"   ÿÿ
ÿz?TestSeriesLogicalOps.test_logical_operators_int_dtype_with_boolc                 C   sŽ   t tdƒdd�}|t dtjddgƒ@ }t dgd ƒ}t ||¡ t ddtjdgƒ}tjtdd	�� ||@  W d   ƒ d S 1 s@w   Y  d S )
Nr0   r1   r   FrO   rP   rR   z3unsupported.* 'int' and 'str'|'rand_' not supportedrB   )	r   r7   r   r   r   r   rF   rG   rH   )r   r:   r   r    Ús_abNdr!   r!   r"   Ú,test_logical_operators_int_dtype_with_object™   s   ÿ
"ýzATestSeriesLogicalOps.test_logical_operators_int_dtype_with_objectc                 C   s\   t dƒ}tg d¢|d�}tg d¢|d�}|d@ }|}t ||¡ |d@ }|}t ||¡ d S )Nr$   r%   r&   r(   r   r3   )r)   r   r   r   )r   r'   r+   r,   r.   r    r!   r!   r"   Ú*test_logical_operators_bool_dtype_with_int§   s   z?TestSeriesLogicalOps.test_logical_operators_bool_dtype_with_intc                 C   sì  t g d¢ƒ}ddd dtjg}d}t g d¢ƒ}tjt|d�� ||@ }W d   ƒ n1 s,w   Y  t ||¡ |t |¡@ }t ||¡ |t|ƒ@ }t ||¡ |t |ƒ@ }t ||¡ t g d¢ƒ}tjt|d�� ||B }W d   ƒ n1 sxw   Y  t ||¡ |t |¡B }t ||¡ |t|ƒB }t ||¡ |t |ƒB }t ||¡ t g d¢ƒ}tjt|d�� ||A }W d   ƒ n1 sÄw   Y  t ||¡ |t |¡A }t ||¡ |t|ƒA }t ||¡ |t |ƒA }t ||¡ d S )	N)TTTFTTFr@   )TFFFFrB   )TTTTT)FTTTT)	r   r   r   r   rI   rJ   r   rK   r   )r   ÚleftÚrightrM   r    r   r!   r!   r"   Ú(test_logical_ops_bool_dtype_with_ndarrayµ   sJ   ÿ
ÿ
ÿ
ÿz=TestSeriesLogicalOps.test_logical_ops_bool_dtype_with_ndarrayc           	      C   sœ  t dƒ}tg d¢|d�}tg d¢|d�}tg d¢|d�}ttdƒdd�}tdgd	 g d
¢d�}t t¡� ||@ }W d   ƒ n1 sCw   Y  t ||¡ tdgd	 g d
¢d�}t t¡� ||@ }W d   ƒ n1 smw   Y  t ||¡ tdgt dƒƒ}t t¡� ||@ }W d   ƒ n1 s”w   Y  | t dƒ¡}t ||¡ t t¡� ||B }W d   ƒ n1 sºw   Y  | t dƒ¡}t ||¡ d S )Nr$   r%   r&   ©TFFr0   r1   r   Fé   )r   r3   r   r   rO   rP   rQ   r3   rP   Úabc)r)   r   r7   r   rI   rJ   r   Úreindex)	r   r'   r+   Ús_tffr:   r    r   Ús_a0b1c0r.   r!   r!   r"   Ú<test_logical_operators_int_dtype_with_bool_dtype_and_reindexà   s4   
ÿ
ÿ
ÿ
ÿzQTestSeriesLogicalOps.test_logical_operators_int_dtype_with_bool_dtype_and_reindexc                 C   sê   t g d¢ƒ}d}tjt|d�� |tdddƒ@  W d   ƒ n1 s"w   Y  t dddd	d
dddtdddƒg	ƒ}tj|d d d…< t d|jd�}d|d d d…< d}tj	t
|d�� |t|ƒ@ }W d   ƒ n1 shw   Y  t ||¡ d S )N)	r   r   r0   é   é   r\   r2   r   r   rA   rB   éÕ  r3   r   r   r0   rb   rc   r\   r2   r   Tr&   Fr@   )r   rF   rG   rH   r   r   r   r'   r   rI   rJ   r)   r   )r   ÚsrM   r    r   r!   r!   r"   Ú"test_scalar_na_logical_ops_corners  s   ÿ"ÿÿz7TestSeriesLogicalOps.test_scalar_na_logical_ops_cornersc                 C   sŠ   t ddddddddtd	d
d
ƒg	ƒ}tj|d d d…< td|iƒ}tdtdƒdgttdƒƒ d�}||@ }t ||¡ ||@ }t ||¡ d S )Nr   r   r0   rb   rc   r\   r2   r   rd   r3   ÚAF)r'   Úcolumns)	r   r   r   r   r   r7   r)   r   Úassert_frame_equal)r   re   rR   r    r   r!   r!   r"   Ú)test_scalar_na_logical_ops_corners_aligns  s   " z>TestSeriesLogicalOps.test_scalar_na_logical_ops_corners_alignsÚopc                    sœ   t g d¢ƒ‰tg d¢ƒ‰ tg d¢ƒ‰t ‡ ‡‡fdd„ttˆƒƒD ƒƒ}ˆˆˆ ƒ}t ||¡ t ‡‡‡fdd„ttˆƒƒD ƒtd�}ˆˆˆƒ}t ||¡ d S )N©TTFF©TFTF©r3   r   r3   r   c                    ó   g | ]}ˆˆ| ˆ | ƒ‘qS r!   r!   ©Ú.0Ún)Úidx1rk   r   r!   r"   Ú
<listcomp>-  ó    zDTestSeriesLogicalOps.test_logical_ops_with_index.<locals>.<listcomp>c                    ro   r!   r!   rp   )Úidx2rk   r   r!   r"   rt   2  ru   r   )r   r   r7   Úlenr   r   Úbool)r   rk   r    r   r!   )rs   rv   rk   r   r"   Útest_logical_ops_with_index&  s   "
&
z0TestSeriesLogicalOps.test_logical_ops_with_indexc                 C   s`   t g d¢ƒ}tg d¢td�}tg d¢ƒ}t g d¢ƒ}||A }t ||¡ ||A }t ||¡ d S )Nrl   rm   r   rn   )FTTF)r   r   rx   r   r   )r   r   rs   rv   r    r   r!   r!   r"   Ú+test_reversed_xor_with_index_returns_series7  s   z@TestSeriesLogicalOps.test_reversed_xor_with_index_returns_seriesc                 C   st   t g d¢ƒ}tg d¢ƒ}tg d¢ƒ}t ||j|jƒƒ}|||ƒ}t ||¡ ||t |ƒƒ}|||ƒ}t ||¡ d S )Nrl   rm   rn   )r   r   Úvaluesr   r   )r   rk   r   rs   rv   r    r   r!   r!   r"   Ú2test_reversed_logical_op_with_index_returns_seriesD  s   	

zGTestSeriesLogicalOps.test_reversed_logical_op_with_index_returns_serieszop, expectedFTc                 C   s2   t ddgƒ}tddgƒ}|||ƒ}t ||¡ d S )NTF)r   r   r   r   )r   rk   r    r   Úidxr   r!   r!   r"   Útest_reverse_ops_with_indexY  s   
z0TestSeriesLogicalOps.test_reverse_ops_with_indexzTODO(infer_string))Úreasonc              	   C   s®  t g d¢tdƒƒ}t g d¢tdƒƒ}t g d¢tdƒƒ}||@ }t ||¡ t g d¢tdƒƒ}||B }t ||¡ t g d¢tdƒƒ}||A }t ||¡ t g d¢tdƒƒ}t g d¢tdƒƒ}t g d	¢tdƒƒ}||@ }t ||¡ t g d
¢tdƒƒ}||B }t ||¡ t g td�}|| ¡ @ }t g d¢tdƒƒ}t ||¡ || ¡ B }t g d¢tdƒƒ}t ||¡ t t¡� |t dgdgƒ@ }W d   ƒ n1 sÌw   Y  t g d¢tdƒƒ}t ||¡ t t¡� |t dgdgƒB }W d   ƒ n1 sùw   Y  t g d
¢tdƒƒ}t ||¡ t t¡�1 | ¡ t dgdgƒt tj	|j
ƒt tj	|j
ƒfD ]}|||B  }t ||| ¡ �q*W d   ƒ n	1 �sGw   Y  t dgƒfD ]3}|�rvtjtdd�� |||B  }W d   ƒ n	1 �spw   Y  n|||B  }t ||| ¡ �qRtdƒ}t g d¢ƒ}	dD ]}
t g d¢|d�|
B }t g d¢|d�}t ||¡ �q’d}tj	dfD ]}
tjt|d�� |	|
B  W d   ƒ n	1 �sÎw   Y  �qµdD ]}
t g d¢|d�|
B }t g d¢|d�}t ||¡ �q×dD ]}
t g d¢|d�|
@ }t g d¢|d�}t ||¡ �qõdD ]}
t g d¢|d�|
@ }t g d¢|d�}t ||¡ �qd}tj	fD ]}
tjt|d�� |	|
@  W d   ƒ n	1 �sNw   Y  �q5d S )Nr%   r$   )FTFr]   ©TTFr[   )FTFTÚabcd)FTFFrl   r   r(   r3   Úz)FFFFÚabczz0not supported for dtype|unsupported operand typerB   )Tr3   r   r&   )TTTrA   Úfoo)Fr   )Tr3   )r   r)   r   r   r   ÚcopyrI   rJ   r   r   r'   rF   rG   rH   )r   Úusing_infer_stringrO   rP   r    r   ÚemptyÚer'   ÚtÚvrM   r!   r!   r"   Útest_logical_ops_label_basedk  s®   ÿÿüùÿ
ÿý€
ÿ€
ÿ€ÿz1TestSeriesLogicalOps.test_logical_ops_label_basedc                 C   s`  t g d¢tdƒdd�}t g d¢tdƒdd�}t g d¢tdƒdd�}t ||@ |¡ t ||@ |¡ t g d	¢tdƒdd�}t ||B |¡ t g d
¢tdƒdd�}t ||B |¡ t | ¡ | ¡ @ | ¡ ¡ t | ¡ | ¡ @ | ¡ ¡ tdddtjtjgitdƒd�}t | ¡ | ¡ B | ¡ ¡ t | ¡ | ¡ B | ¡ ¡ t g d¢tdƒdd�}t g d¢tdƒdd�}t g d¢tdƒdd�}t ||@ |¡ t ||@ |¡ t g d	¢tdƒdd�}t ||B |¡ t g d¢tdƒdd�}t ||B |¡ t | ¡ | ¡ @ | ¡ ¡ t | ¡ | ¡ @ | ¡ ¡ t | ¡ | ¡ B | ¡ ¡ t | ¡ | ¡ B | ¡ ¡ d S )Nr%   ÚABCÚx©r'   Únamer€   ÚABD)TFFFÚABCD)TTTFrl   Tr&   )TTTTrm   )	r   r)   r   r   ri   Úto_framer   r   r   )r   Ús1Ús2ÚexpÚexp_or1Úexp_orÚs3Ús4r!   r!   r"   Útest_logical_ops_df_compatÜ  s6     z/TestSeriesLogicalOps.test_logical_ops_df_compatz-Will pass once #52839 deprecation is enforcedc                 C   sr   t g d¢g d¢dd�}t g d¢g d¢dd�}t ||¡}t g d¢g d¢dd�}t ||¡ ||A }t ||¡ d S )N)r3   r   r   )r   é   é   rO   rŽ   )r   é   é   )r›   r   rœ   )é   r2   é   )r   r   Úbitwise_xorr   r   )r   Úser1Úser2r   r    r!   r!   r"   Ú'test_int_dtype_different_index_not_bool	  s   z<TestSeriesLogicalOps.test_int_dtype_different_index_not_boolc                 C   sž  t  d¡}tddgƒ}tddgttjd�d�}||k}td|jd�}t ||¡ ||k}td|jd�}t ||¡ t j	t
d	d
�� ||k W d   ƒ n1 sOw   Y  | d¡}||k}t || d¡¡ ||k}	t |	| d¡¡ t j	t
d	d
�� ||k W d   ƒ n1 s‰w   Y  | t| ¡ ƒ¡}
|
|k}t || d¡¡ |
|k}t || d¡¡ t j	t
d	d
�� ||
k W d   ƒ d S 1 sÈw   Y  d S )NÚpyarrowFTrO   rP   )Úna_valuer   r&   zInvalid comparisonrB   zstring[pyarrow]zbool[pyarrow])rF   Úimportorskipr   r   r   r   r'   r   r   rG   rH   r8   r   Ústring)r   Úpar   r£   r   Úexpected_eqÚexpected_neÚser3Ú
result3_eqÚ
result3_neÚser4Ú
result4_eqÚ
result4_ner!   r!   r"   Ú!test_pyarrow_numpy_string_invalid  s8   

ÿ

ÿ
"ÿz6TestSeriesLogicalOps.test_pyarrow_numpy_string_invalidN)'Ú__name__Ú
__module__Ú__qualname__rF   ÚmarkÚfilterwarningsÚparametrizeÚoperatorÚand_Úor_Úxorr#   r/   r>   r?   rN   rS   rT   rV   rW   rZ   ra   rf   rj   ry   rz   r
   Úrand_Úror_r|   r   Úrxorr~   Úxfailr   r‹   rš   r¤   r²   r!   r!   r!   r"   r      sP    
+$
þþ
ýþ


p-
r   )r   r¹   Únumpyr   rF   Úpandas._configr   Úpandasr   r   r   r   r   r	   Úpandas._testingÚ_testingr   Úpandas.corer
   r   r!   r!   r!   r"   Ú<module>   s     