a
    GGb0                     @   s  d dl Zd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ dd Zdd Zdd	 Zd
d Zejddddejejgg dfdejgddgfdejgddgfejejgddgfejejejgedddgfgdd Zejdddgddgddgddgejdddedgeddgeddgejddig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/d0 Z ejjd1ddgd2d3gd4d5d6 Z!d7d8 Z"dS )9    N)BooleanArray)coerce_to_arrayc                  C   s  t jg ddd} t jg ddd}t| |}tjg ddd}t|| tjtdd t| 	 | W d    n1 s~0    Y  tjtd	d t| |	  W d    n1 s0    Y  tjtdd  t| 
t| W d    n1 s0    Y  tjtd	d t| d  W d    n1 s20    Y  tjtd
d" t| dd| W d    n1 st0    Y  tjtd
d" t| |dd W d    n1 s0    Y  d S )NTFTFbooldtypeFFFTTFTNbooleanz$values should be boolean numpy arraymatchz"mask should be boolean numpy arrayz"values.shape must match mask.shape   )nparrayr   pdtmassert_extension_array_equalpytestraises	TypeErrortolistZastypeint
ValueErrorreshapevaluesmaskresultexpected r    Llib/python3.9/site-packages/pandas/tests/arrays/boolean/test_construction.pytest_boolean_array_constructor
   s"    
,,.*2r"   c                  C   sx   t jg ddd} t jg ddd}t| |}|j| u s<J |j|u sJJ t| |dd}|j| usfJ |j|ustJ d S )Nr   r   r   r   T)copy)r   r   r   _data_mask)r   r   r   r    r    r!   #test_boolean_array_constructor_copy%   s    
r&   c                  C   s   t tg dtg d} tjg ddd}t||  tjtg ddd}t||  tjtjg dtddd}t||  t tg dtg d} tjg ddd}t||  tjtjg dtddd}t||  d S )NTFT)FFFr
   r   FFTTFNr   r   r   r   r   r   objectr   r   r    r    r!   test_to_boolean_array2   s     r-   c                  C   sh   t tg dtg d} tjg ddd}t||  tjtjg dtddd}t||  d S )N)TTT)NNNr
   r   r*   r,   r    r    r!   test_to_boolean_array_all_noneI   s
    r.   za, bTF)TFNNNr   c                 C   s,   t j| dd}t j|dd}t|| d S )Nr
   r   r   r   r   r   )abr   r   r    r    r!   (test_to_boolean_array_missing_indicatorsR   s    r2   r   ZfooZbar12r            ?g       @Z20130101)Zperiodsr0   c                 C   sD   d}t jt|d tj| dd W d    n1 s60    Y  d S )NzNeed to pass bool-like valuer   r
   r   )r   r   r   r   r   )r   msgr    r    r!   test_to_boolean_array_errorb   s    r8   c                  C   sp   t jtg ddd} t jg ddd}t| | t jtg ddd} t jg ddd}t| | d S N)r   r   r   r   r
   r   r   )r   r   r   Nr	   )r   r   r   r   r   r   r   r    r    r!   (test_to_boolean_array_from_integer_arrayx   s    r;   c                  C   sv   t jtg ddd} t jg ddd}t| | t jtdddtjgdd} t jg ddd}t| | d S )N)r6           r6   r<   r
   r   r   r6   r<   r	   )r   r   r   r   r   nanr:   r    r    r!   &test_to_boolean_array_from_float_array   s    r>   c                  C   sd   t jg ddd} t jg ddd}t| | t jg ddd} t jg ddd}t| | d S r9   r/   r:   r    r    r!   "test_to_boolean_array_integer_like   s    r?   c                  C   s  t jg ddd} t jg ddd}tt| |d }t| |}t|| |j| u sXJ |j|u sfJ tt| |dd }t| |}t|| |j| usJ |j|usJ g d} t jg ddd}tt| |d }tt g d	t g d
}t|| ttt j| td|d }t|| tt| |	 d }t|| t jg ddd} t jg ddd}t
jtdd  t| dd W d    n1 s0    Y  t
jtdd$ t| |ddd W d    n1 s0    Y  d S )Nr   r   r   r   r   T)r   r#   )TFNF)TFTT)FFTTz&values.shape and mask.shape must matchr   r   r   )r   r   r   r   r   r   r$   r%   r+   r   r   r   r   r   r   r    r    r!   test_coerce_to_array   s:    

0rA   c                  C   s   t jg ddd} t jg ddd}t| |}tt| }t|| |j|ju sVJ |j|ju sfJ tt|ddi}t|| |j|jusJ |j|jusJ tj	t
dd t||d	 W d    n1 s0    Y  d S )
Nr   r   r   r   r#   Tz'cannot pass mask for BooleanArray inputr   r@   )r   r   r   r   r   r   r$   r%   r   r   r   )r   r   arrr   r    r    r!   'test_coerce_to_array_from_boolean_array   s    
rC   c                  C   s   t jg ddd} t| }tjddt jgdd}t|| t jg ddd} t| }tjg ddd}t|| tj| dd}tjg ddd}t|| t jg ddd} d	}tjt|d
 tj| dd W d    n1 s0    Y  d S )Nr)   r
   r   TFr+   r'   r   zqcannot convert to 'bool'-dtype NumPy array with missing values. Specify an appropriate 'na_value' for this dtype.r   )	r   r   r   NAr   assert_numpy_array_equalr   r   r   )rB   r   r   r7   r    r    r!   test_coerce_to_numpy_array   s     

rF   c               
   C   sR   t tjddddddtjgtd} t tg dtg d	}t| | d S )
NTrueFalser3   z1.00z0.0r   )TFTTFFF)FFFFFFT)r   _from_sequence_of_stringsr   r   r=   r+   r   r   r:   r    r    r!   "test_to_boolean_array_from_strings   s    rK   c                   C   s>   t jtdd tdg W d    n1 s00    Y  d S )Nzcannot be castr   Zdonkey)r   r   r   r   rJ   r    r    r    r!   1test_to_boolean_array_from_strings_invalid_string   s    rL   boxZseriesr   )Zidsc                 C   s  | r
t jnt j}|g ddd}| }tjg ddd}t|| |g ddd}| }tjddt jgdd}t|| |g ddd}|jdd}tjddt jgd	d}t|| |g ddd}|jd
d}tjg dd
d}t|| |g ddd}tj	t
dd |jd
d}W d    n1 s:0    Y  |g ddd}|jtd d}tjg ddd}t|| |jtdd}tjg dd
d}t|| |jddd}tjg ddd}t|| |jdtjd}tjddtjgdd}t|| tj	t
dd |jdd W d    n1 s<0    Y  tj	t
dd |jdd W d    n1 sx0    Y  d S )Nr'   r
   r   r+   r)   TFstrz<U5r   zcannot convert to 'bool'-dtyper   )r   Zna_value)TFFZint64)r   r   rO   Zfloat64r   r   zcannot convert to 'int64'-dtypez!cannot convert to 'float64'-dtype)r   ZSeriesr   to_numpyr   r   rE   rD   r   r   r   r+   r   r=   )rM   ZconrB   r   r   r    r    r!   test_to_numpy  sJ    ,,rQ   c                  C   s   t jg ddd} | jtd}d|d< t| t jg ddd t jg ddd} | jtdd}d|d< t| t jg ddd d S )	Nr'   r
   r   Fr   r(   T)r   r#   )r   r   rP   r   r   r   )rB   r   r    r    r!   test_to_numpy_copy7  s    rR   )#Znumpyr   r   Zpandasr   Zpandas._testingZ_testingr   Zpandas.arraysr   Zpandas.core.arrays.booleanr   r"   r&   r-   r.   ZmarkZparametrizer=   rD   r   floatr2   Z
date_ranger8   r;   r>   r?   rA   rC   rF   rK   rL   rQ   rR   r    r    r    r!   <module>   sX   	



'
5