o
    �¨ÊhçN  ã                   @   sf   d dl m Z  d dlZd dlZd dlZd dl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)Ú	DataFrameÚIndexÚSeriesÚbdate_range)Úopsc                	   @   sV  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 d)d*„ Z!d+d,„ Z"ejj#d-d.�d/d0„ ƒZ$d1d2„ Z%d3S )4Ú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   úV/var/www/html/env/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   r0   r   r0   )r0   r0   r   r   Úint32)r   Úranger   r   Úastyper   Úint16r3   )r   Ús_0123Ús_3333Ús_4444r+   r   Ús_1111r   r   r   Ú/test_logical_operators_int_dtype_with_int_dtype2   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 )Nr-   r.   r   r   r0   r2   )r   r4   r   r   )r   r7   r+   r   r   r   r   Ú0test_logical_operators_int_dtype_with_int_scalarJ   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 )Nr-   r.   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 &:)çš™™™™™¹?r-   rA   r   )rB   r-   g…ëQ¸	Àr   )r   r4   ÚpytestÚraisesÚ	TypeErrorr   r   r   Úassert_produces_warningÚFutureWarningÚarray)r   r7   Úwarn_msgÚmsgr   r   r   Ú+test_logical_operators_int_dtype_with_floatV   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 )Nr0   r-   r1   r   r=   z=Cannot perform 'and_' with a dtyped.+array and scalar of typer?   Úazunsupported operand.+for &)rL   ÚbÚcÚd)r   rC   rD   rE   r   rF   rG   )r   r:   rI   rJ   r   r   r   Ú)test_logical_operators_int_dtype_with_strm   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 )	Nr-   r.   r   Fr=   r?   )F)FTTT)r   r4   r   r   rF   rG   )r   r7   r   r   rI   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ƒ}|rOdd l}tj|j	j
d	d
�� ||@  W d   ƒ d S 1 sHw   Y  d S tjtdd
�� ||@  W d   ƒ d S 1 sfw   Y  d S )Nr-   r.   r   FrL   rM   rO   r   úhas no kernelr?   zunsupported.* 'int' and 'str')r   r4   r   r   r   r   ÚpyarrowrC   rD   ÚlibÚArrowNotImplementedErrorrE   )r   Úusing_infer_stringr7   r   r   Ús_abNdÚpar   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   r0   )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=   )TFFFFr?   )TTTTT)FTTTT)	r   r   r   r   rF   rG   r   rH   r   )r   ÚleftÚrightrJ   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#   ©TFFr-   r.   r   Fé   )r   r0   r   r   rL   rM   rN   r0   rM   Úabc)r&   r   r4   r   rF   rG   r   Úreindex)	r   r$   r(   Ús_tffr7   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   r-   é   é   r_   r/   r   r
   r>   r?   éÕ  r0   r   r   r-   re   rf   r_   r/   r   Tr#   Fr=   )r   rC   rD   rE   r   r   r   r$   r   rF   rG   r&   r   )r   ÚsrJ   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   r-   re   rf   r_   r/   r   rg   r0   ÚAF)r$   Úcolumns)	r   r   r   r   r   r4   r&   r   Úassert_frame_equal)r   rh   rO   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©r0   r   r0   r   c                    ó   g | ]}ˆˆ| ˆ | ƒ‘qS r   r   ©Ú.0Ún)Úidx1rn   r   r   r   Ú
<listcomp>-  ó    zDTestSeriesLogicalOps.test_logical_ops_with_index.<locals>.<listcomp>c                    rr   r   r   rs   )Úidx2rn   r   r   r   rw   2  rx   r   )r   r   r4   Úlenr   r   Úbool)r   rn   r   r   r   )rv   ry   rn   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 )Nro   rp   r   rq   )FTTF)r   r   r{   r   r   )r   r   rv   ry   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 )Nro   rp   rq   )r   r   Úvaluesr   r   )r   rn   r   rv   ry   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   rn   r   r   Úidxr   r   r   r   Útest_reverse_ops_with_indexY  s   
z0TestSeriesLogicalOps.test_reverse_ops_with_indexc              
   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 ]X}|�rYtnd }|�r›dd l}	tj|dd��( tj|	jjdd�� |||B  }W d   ƒ n	1 �s…w   Y  W d   ƒ n	1 �s•w   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 ||¡ �q8d}tj	fD ]}tjt|d�� ||@  W d   ƒ n	1 �ssw   Y  �qZd S )Nr"   r!   )FTFr`   ©TTFr^   )FTFTÚabcd)FTFFro   r   r%   r0   Úz)FFFFÚabczr   zOperation between nonr?   rR   )Tr0   r   r#   )TTTr>   Úfoo)Fr   )Tr0   )r   r&   r   r   r   ÚcopyrF   rG   r   r   r$   rS   rC   rD   rT   rU   rE   )r   rV   rL   rM   r   r   ÚemptyÚeÚwarnrX   r$   ÚtÚvrJ   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)TTTFro   Tr#   )TTTTrp   )	r   r&   r   r   rl   Ú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 enforced)Úreasonc                 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)r0   r   r   )r
   é   é   rL   r�   )r
   é   é   )rž   r
   rŸ   )é   r/   é   )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dd�}||k}td|jd�}t ||¡ ||k}td|jd�}t ||¡ t jtd	d
�� ||k W d   ƒ d S 1 sLw   Y  d S )NrS   FTrL   rM   zstring[pyarrow_numpy]r   r#   zInvalid comparisonr?   )rC   Úimportorskipr   r$   r   r   rD   rE   )r   r   r¦   r   r   r   r   r   Ú!test_pyarrow_numpy_string_invalid  s   

"ÿz6TestSeriesLogicalOps.test_pyarrow_numpy_string_invalidN)&Ú__name__Ú
__module__Ú__qualname__rC   ÚmarkÚfilterwarningsÚparametrizeÚoperatorÚand_Úor_Úxorr    r,   r;   r<   rK   rP   rQ   rY   rZ   r]   rd   ri   rm   r|   r}   r   Úrand_Úror_r   r   Úrxorr�   r�   rœ   Úxfailr§   r©   r   r   r   r   r      sN    
+$
þþ
ýþ

r-
r   )r   r°   Únumpyr   rC   Úpandasr   r   r   r   Úpandas._testingÚ_testingr   Úpandas.corer   r   r   r   r   r   Ú<module>   s    