o
    g.                     @   s   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
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G dd dZG dd	 d	ZG d
d dZG dd dZdS )    N)CategoricalCategoricalDtypeCategoricalIndex	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestampconcatget_dummiesperiod_range)SparseArrayc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestGetitemc                 C   sr   t g dddggddgddggd}tdtd|d	}tjtd
d |d
  W d    d S 1 s2w   Y  d S )N)a_lotonlyone
notevenonei      r   )levelscodes   )indexcolumnsr   match)r   r   rangepytestraisesKeyError)selfmidf r$   f/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/indexing/test_getitem.py test_getitem_unused_level_raises   s   
"z,TestGetitem.test_getitem_unused_level_raisesc                 C   sv   t ddd}ttjdd|d}||d  }t||jd d df  t| |d }t||jd d df  d S )Nz1/1/2000   )periods
   r   r   )	r   r   nprandomrandntmassert_series_equalilocrepr)r!   rngr#   tsr$   r$   r%   test_getitem_periodindex$   s   z$TestGetitem.test_getitem_periodindexc                 C   sZ   t tdtdg}tddgddggdddg|d}t|}|t|j }t|| d S )Nz
12-31-1999z
12-31-2000r   r   uint8)dtyper   r   )r   r
   r   r   listr   r.   assert_frame_equal)r!   catsexpecteddummiesresultr$   r$   r%   1test_getitem_list_of_labels_categoricalindex_cols1   s   z=TestGetitem.test_getitem_list_of_labels_categoricalindex_colsc                 C   sx   t ddg}td|i}t|dd}|d }t|| |jd d df }t|| |jd d df }t|| d S )Nr   r   Aname)r   r   r	   r.   r/   r0   loc)r!   datar#   r:   r<   r$   r$   r%   0test_getitem_sparse_column_return_type_and_dtype<   s   z<TestGetitem.test_getitem_sparse_column_return_type_and_dtypeN)__name__
__module____qualname__r&   r4   r=   rC   r$   r$   r$   r%   r      s
    r   c                	   @   sx   e Zd Zdd Zdd Zdd Zejjde	e
eedd	 d
d	 gg ddejdddgdd Zdd Zdd ZdS )TestGetitemListLikec                 C   s`   t dgdgdgd}g d|_tjtdd |g d  W d    d S 1 s)w   Y  d S )Ng      ?g       @      @)xyz)rI   rI   rK   z\['y'\] not in indexr   )r   r   r   r   r    )r!   r#   r$   r$   r%   test_getitem_list_missing_keyM   s
   
"z1TestGetitemListLike.test_getitem_list_missing_keyc                 C   sd   t tjddtdd}d|j_|ddg }|jjdksJ |jd d dd f }t	|| d S )N   AABCr*   fooBC   )
r   r+   r,   r-   r7   r   r@   r0   r.   r8   r!   r#   r<   r:   r$   r$   r%   test_getitem_list_duplicatesW   s   z0TestGetitemListLike.test_getitem_list_duplicatesc                 C   sd   t g dg dgg dd}d}tjtt|d |dg  W d    d S 1 s+w   Y  d S )Nr   rR   r   rM   r'      )arX   br*   z?"None of [Index(['baf'], dtype='object')] are in the [columns]"r   baf)r   r   r   r    reescape)r!   r#   msgr$   r$   r%   test_getitem_dupe_colsb   s
   "z*TestGetitemListLike.test_getitem_dupe_colsidx_typec                 C   s   t t| tt| S N)dictzipr   lenlr$   r$   r%   <lambda>o   s    zTestGetitemListLike.<lambda>c                 C   s   t t| tt|  S r`   )ra   rb   r   rc   keysrd   r$   r$   r%   rf   p   s    )r7   iterr   setra   	dict_keys)idsr   r   rR   c                 C   s   |dkr
|d}}nt tjddtg dddd}d	}|jd |jd
 g}||}t||}|| }	|jd d |f }
|jj|
j_t	
|	|
 |||g }tjtdd ||  W d    d S 1 shw   Y  d S )Nr   food   r   ))rO   bar)bazqux)peekaboo)sthsth2r?   r*   )goodrl   r   znot in indexr   )r   r+   r,   r-   r   r   r7   rA   namesr.   r8   r   r   r    )r!   r_   r   float_frameframemissingrg   idx	idx_checkr<   r:   r$   r$   r%   test_getitem_listlikeh   s*   
"z)TestGetitemListLike.test_getitem_listlikec                 C   s\   t g dg dd}dd dD }|j| }t ddgd	d
gdddgd}t|| d S )NrU   rV   rX   rY   c                 s       | ]}|V  qd S r`   r$   .0rI   r$   r$   r%   	<genexpr>       zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>r   rR   rR   r   r'   rW   r   r   )r   r0   r.   r8   r!   r#   indexerr<   r:   r$   r$   r%   test_getitem_iloc_generator   s
   
z/TestGetitemListLike.test_getitem_iloc_generatorc                 C   sX   t g dg dd}dd dD }|j|df }tdd	gd
ddgd}t|| d S )NrU   rV   r}   c                 s   r~   r`   r$   r   r$   r$   r%   r      r   zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>r   r   r'   rW   rY   rR   )r@   r   )r   r0   r	   r.   r/   r   r$   r$   r%   +test_getitem_iloc_two_dimensional_generator   s
   z?TestGetitemListLike.test_getitem_iloc_two_dimensional_generatorN)rD   rE   rF   rL   rT   r^   r   markparametrizer7   rh   r   ri   r|   r   r   r$   r$   r$   r%   rG   L   s&    
rG   c                   @      e Zd Zdd Zdd ZdS )TestGetitemCallablec                 C   s   |dd  }|j d d df }t|| |dd  }|j d d ddgf }t||j d d ddgf  |d d }|dd  }|jdd	gd d f }t|| d S )
Nc                 S   s   dS )Nr>   r$   rI   r$   r$   r%   rf      s    z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>r>   c                 S   s   ddgS )Nr>   rP   r$   r   r$   r$   r%   rf          rP   r   c                 S   s   g dS )N)TFTr$   r   r$   r$   r%   rf      r   r   rR   )rA   r.   r/   r8   r0   )r!   rw   r<   r:   r#   r$   r$   r%   test_getitem_callable   s   z)TestGetitemCallable.test_getitem_callablec                 C   s`   t ddggddggd}t dgdggd}|d }t|| |jd d df }t|| d S )Nr   rR   rX   rY   r*   )r   r.   r8   rA   )r!   r#   r:   r<   r$   r$   r%   %test_loc_multiindex_columns_one_level   s   z9TestGetitemCallable.test_loc_multiindex_columns_one_levelN)rD   rE   rF   r   r   r$   r$   r$   r%   r      s    r   c                   @   s   e Zd Zdd Zejdddgddggdd	gd
dggejdgejdgejdgddggfddgddggdd	gd
dggejdgejdgdd
gd	dggffdd Z	ej
dd Zdd Zdd Zdd Zdd ZdS )TestGetitemBooleanMaskc                 C   s  t dtjddditg dtg dddd	d
d}t dtjddditg dtg dddd	d
d}||jdk }|jg  }t|| ||jdk }|jg  }t|| ||jdk }|jg d }t|| ||jdk }|jg d }t|| ||jdk  }|jdg }t|| ||jdk }|jg  }t|| d}t	j
t|d ||jdk   W d    n1 sw   Y  t	j
t|d ||jdk  W d    d S 1 sw   Y  d S )Nr>   rW   int64)r6   )r   r   rR   r   r   rR   )r   rR   r   T)orderedrP   )r6   r@   r   FrX   r   )r   r   r   rR   rM   z7Unordered Categoricals can only compare equality or notr   )r   r+   aranger   r   r   r0   r.   r8   r   r   	TypeError)r!   df3df4r<   r:   r]   r$   r$   r%   (test_getitem_bool_mask_categorical_index   sV   



	"z?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_indexzdata1,data2,expected_datar   rR   r   rM   g      ?rW      rm   rH   g      @g      @g      @g       @r'   c           
      C   sp   t t|}t t|}t||gdd}||dk }dd t|D }t |jdddd}	t||	 d S )	Nr   )axisrR   c                 S   s   i | ]
\}}|t |qS r$   )r+   array)r   icolr$   r$   r%   
<dictcomp>   s    z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>r   )rR   r   r*   )r   r+   r   r   	enumeraterenamer.   r8   )
r!   data1data2expected_datadf1df2r#   r<   exdictr:   r$   r$   r%   5test_getitem_bool_mask_duplicate_columns_mixed_dtypes  s   zLTestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypesc                 C   s(   g d}t tddd|dd}|S )N)r>   r>   rQ   D   r   rM   float64r   r6   )r   r+   r   reshape)r!   dupsr#   r$   r$   r%   df_dup_cols$  s   z"TestGetitemBooleanMask.df_dup_colsc                 C   sJ   |}d}t jt|d ||jdk  W d    d S 1 sw   Y  d S )Nz$cannot reindex from a duplicate axisr   rW   )r   r   
ValueErrorr>   )r!   r   r#   r]   r$   r$   r%   ;test_getitem_boolean_frame_unaligned_with_duplicate_columns*  s
   "zRTestGetitemBooleanMask.test_getitem_boolean_frame_unaligned_with_duplicate_columnsc                 C   sf   t tdddg ddd}||jdk }|j|_|}||jdk }t|| |j t	| d S Nr   r   rM   )r>   rP   rQ   r   r   r   rW   )
r   r+   r   r   rQ   r   r.   r8   dtypesstrr!   r   r#   r:   r<   r$   r$   r%   2test_getitem_boolean_series_with_duplicate_columns3  s   zITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsc                 C   sb   t tdddg ddd}||dk }|j|_|}||dk }t|| |j t| d S r   )	r   r+   r   r   r   r.   r8   r   r   r   r$   r$   r%   1test_getitem_boolean_frame_with_duplicate_columnsC  s   zHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsc                 C   s"   t  }||dk }t|| d S )Nr   )r   r.   r8   )r!   r#   r   r$   r$   r%   %test_getitem_empty_frame_with_booleanT  s   z<TestGetitemBooleanMask.test_getitem_empty_frame_with_booleanN)rD   rE   rF   r   r   r   r   r+   nanr   fixturer   r   r   r   r   r$   r$   r$   r%   r      s*    B 

	r   c                   @   r   )TestGetitemSlicec           
      C   s   t ddd}t|}|ddg \}}t jdd}|tur&|d d df }|||d	}||| }|jdd
 }	t||	 |j	|| }t||	 d S )Ng      $@g      I@rR   r'         r   r   r      )
r+   r   r   r,   r-   r   r0   r.   assert_equalrA   )
r!   frame_or_seriesvaluesr   startendrB   objr<   r:   r$   r$   r%   test_getitem_slice_float64]  s   z+TestGetitemSlice.test_getitem_slice_float64c                 C   sv   t dditg dd}tt |dd }W d    n1 s"w   Y  t dditg dd}t|| d S )NrX   r   )11.01.2011 22:0011.01.2011 23:00z12.01.2011 00:002011-01-13 00:00r   z
2011-01-01z
2011-11-01)r   r   r   )r   r   r.   assert_produces_warningFutureWarningr8   rS   r$   r$   r%   test_getitem_datetime_slicep  s    z,TestGetitemSlice.test_getitem_datetime_sliceN)rD   rE   rF   r   r   r$   r$   r$   r%   r   \  s    r   )r[   numpyr+   r   pandasr   r   r   r   r   r   r   r	   r
   r   r   r   pandas._testing_testingr.   pandas.core.arraysr   r   rG   r   r   r   r$   r$   r$   r%   <module>   s    84X 