a
    é´«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é
   )Zperiods©Zdtypeé   r   é	   é   F)	r   r	   ÚobjectÚnpÚnanZisnaZfillnaÚtmÚassert_series_equal)Úselfr   ÚserÚmaskZfilledÚresultÚexpected© r   úc/var/www/html/laksyashrimp/venv/lib/python3.9/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   Z
sort_indexr   r   )r   r"   Ús_tftÚs_fffZ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   r,   r   r,   )r,   r,   r   r   Úint32)r   Úranger   r   Úastyper   Zint16r/   )r   Ús_0123Zs_3333Z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 )Nr)   r*   r   r   r,   r.   )r   r0   r   r   )r   r2   r'   r   r   r   r   Ú0test_logical_operators_int_dtype_with_int_scalarN   s    zETestSeriesLogicalOps.test_logical_operators_int_dtype_with_int_scalarc              	   C   sx  t tdƒdd�}d}d}tjt|d�� |tj@  W d   ƒ n1 sF0    Y  tjt|d�� |d@  W d   ƒ n1 s|0    Y  d}tjt|d��J tjt	|d�� |g d	¢@  W d   ƒ n1 sÊ0    Y  W d   ƒ n1 sè0    Y  tjt|d��" |t 
g d	¢¡@  W d   ƒ n1 �s*0    Y  tjt|d��  |t g d
¢ƒ@  W d   ƒ n1 �sj0    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)   r:   r   )r;   r)   g…ëQ¸	Àr   )r   r0   ÚpytestÚraisesÚ	TypeErrorr   r   r   Úassert_produces_warningÚFutureWarningÚarray)r   r2   Úwarn_msgÚmsgr   r   r   Ú+test_logical_operators_int_dtype_with_floatZ   s     ÿ(&H2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 sF0    Y  tjtd	d��J tjt|d�� |g d
¢@  W d   ƒ n1 s�0    Y  W d   ƒ n1 s®0    Y  d S )Nr,   r)   r-   r   r6   z=Cannot perform 'and_' with a dtyped.+array and scalar of typer8   Úazunsupported operand.+for &)rE   ÚbÚcÚd)r   r<   r=   r>   r   r?   r@   )r   r3   rB   rC   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 sd0    Y  t ||¡ tjt|d�� |d@ }W d   ƒ n1 s¦0    Y  t ||¡ |dA }t g d¢ƒ}t ||¡ d S )	Nr)   r*   r   Fr6   r8   )F)FTTT)r   r0   r   r   r?   r@   )r   r2   r   r   rB   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   ƒ n1 s~0    Y  d S )
Nr)   r*   r   FrE   rF   rH   z3unsupported.* 'int' and 'str'|'rand_' not supportedr8   )	r   r0   r   r   r   r   r<   r=   r>   )r   r2   r   r   Z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   r,   )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 sX0    Y  t ||¡ |t |¡@ }t ||¡ |t|ƒ@ }t ||¡ |t |ƒ@ }t ||¡ t g d¢ƒ}tjt|d�� ||B }W d   ƒ n1 sð0    Y  t ||¡ |t |¡B }t ||¡ |t|ƒB }t ||¡ |t |ƒB }t ||¡ t g d¢ƒ}tjt|d�� ||A }W d   ƒ n1 �sŠ0    Y  t ||¡ |t |¡A }t ||¡ |t|ƒA }t ||¡ |t |ƒA }t ||¡ d S )	N)TTTFTTFr6   )TFFFFr8   )TTTTT)FTTTT)	r   r   r   r   r?   r@   r   rA   r   )r   ÚleftÚrightrC   r   r   r   r   r   Ú(test_logical_ops_bool_dtype_with_ndarrayµ   sD    ÿ&&(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 s†0    Y  t ||¡ tdgd	 g d
¢d�}t t¡� ||@ }W d   ƒ n1 sÚ0    Y  t ||¡ tdgt dƒƒ}t t¡� ||@ }W d   ƒ n1 �s*0    Y  | t dƒ¡}t ||¡ t t¡� ||B }W d   ƒ n1 �sx0    Y  | t dƒ¡}t ||¡ d S )Nr   r    r!   ©TFFr)   r*   r   Fé   )r   r,   r   r   rE   rF   rG   r,   rF   Úabc)r$   r   r0   r   r?   r@   r   Zreindex)	r   r"   r%   Zs_tffr2   r   r   Zs_a0b1c0r'   r   r   r   Ú<test_logical_operators_int_dtype_with_bool_dtype_and_reindexà   s,    &&((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 sD0    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 sÐ0    Y  t ||¡ d S )N)	r   r   r)   é   é   rQ   r+   r   r   r7   r8   éÕ  r,   r   r   r)   rT   rU   rQ   r+   r   Tr!   Fr6   )r   r<   r=   r>   r   r   r   r"   r   r?   r@   r$   r   )r   ÚsrC   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)   rT   rU   rQ   r+   r   rV   r,   ÚAF)r"   Úcolumns)	r   r   r   r   r   r0   r$   r   Úassert_frame_equal)r   rW   rH   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©r,   r   r,   r   c                    s   g | ]}ˆˆ| ˆ | ƒ‘qS r   r   ©Ú.0Ún)Úidx1r]   r   r   r   Ú
<listcomp>-  ó    zDTestSeriesLogicalOps.test_logical_ops_with_index.<locals>.<listcomp>c                    s   g | ]}ˆˆ| ˆ | ƒ‘qS r   r   ra   )Úidx2r]   r   r   r   re   2  rf   r   )r   r   r0   Úlenr   r   Úbool)r   r]   r   r   r   )rd   rg   r]   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 )Nr^   r_   r   r`   )FTTF)r   r   ri   r   r   )r   r   rd   rg   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 )Nr^   r_   r`   )r   r   Úvaluesr   r   )r   r]   r   rd   rg   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   r]   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š0    Y  t g d¢tdƒƒ}t ||¡ t t¡�" |t dgdgƒB }W d   ƒ n1 �sö0    Y  t g d
¢tdƒƒ}t ||¡ t t¡�b | ¡ t dgdgƒt tj	|j
ƒt tj	|j
ƒfD ]"}|||B  }t ||| ¡ �qXW d   ƒ n1 �s’0    Y  t dgƒfD ]f}|�rðtjtdd�� |||B  }W d   ƒ n1 �sä0    Y  n|||B  }t ||| ¡ �q¨tdƒ}t g d¢ƒ}	dD ]6}
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 0    Y  �qndD ]6}
t g d¢|d�|
B }t g d¢|d�}t ||¡ �q²dD ]6}
t g d¢|d�|
@ }t g d¢|d�}t ||¡ �qîdD ]6}
t g d¢|d�|
@ }t g d¢|d�}t ||¡ �q*d}tj	fD ]>}
tjt|d�� |	|
@  W d   ƒ n1 �s 0    Y  �qnd S )Nr    r   )FTFrR   ©TTFrP   )FTFTÚabcd)FTFFr^   r   r#   r,   Úz)FFFFZabczz0not supported for dtype|unsupported operand typer8   )Tr,   r   r!   )TTTr7   Zfoo)Fr   )Tr,   )r   r$   r   r   r   Úcopyr?   r@   r   r   r"   r<   r=   r>   )r   Zusing_infer_stringrE   rF   r   r   ÚemptyÚer"   ÚtÚvrC   r   r   r   Útest_logical_ops_label_basedk  s˜    22ü4ÿ.,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"   Únamerq   ZABD)TFFFÚABCD)TTTFr^   Tr!   )TTTTr_   )	r   r$   r   r   r[   Zto_framer   r   r   )r   Ús1Ús2ÚexpZexp_or1Zexp_orZs3Z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)r,   r   r   )r   é   é   rE   r|   )r   é   é   )rƒ   r   r„   )é   r+   é   )r   r   Zbitwise_xorr   r   )r   Z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 sž0    Y  | d¡}||k}t || d¡¡ ||k}	t |	| d¡¡ t j	t
d	d
�� ||k W d   ƒ n1 �s0    Y  | t| ¡ ƒ¡}
|
|k}t || d¡¡ |
|k}t || d¡¡ t j	t
d	d
�� ||
k W d   ƒ n1 �s’0    Y  d S )NZpyarrowFTrE   rF   )Zna_valuer   r!   zInvalid comparisonr8   zstring[pyarrow]zbool[pyarrow])r<   Zimportorskipr   r   r   r   r"   r   r   r=   r>   r1   r   Ústring)r   Úpar   r‰   r   Zexpected_eqZexpected_neZser3Z
result3_eqZ
result3_neZser4Z
result4_eqZ
result4_ner   r   r   Ú!test_pyarrow_numpy_string_invalid  s2    
&
(z6TestSeriesLogicalOps.test_pyarrow_numpy_string_invalidN)'Ú__name__Ú
__module__Ú__qualname__r<   ÚmarkÚfilterwarningsZparametrizeÚoperatorÚand_Úor_Úxorr   r(   r4   r5   rD   rI   rJ   rK   rL   rO   rS   rX   r\   rj   rk   r
   Zrand_Zror_rm   r   Zrxorro   Zxfailr   ry   r‚   rŠ   r�   r   r   r   r   r      sN   
+$
þþ
ýþ


p-
r   )r   r“   Únumpyr   r<   Zpandas._configr   Zpandasr   r   r   r   r   r	   Zpandas._testingZ_testingr   Zpandas.corer
   r   r   r   r   r   Ú<module>   s    