o
    5c>:                     @   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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G dd dZdS )    N)CategoricalCategoricalDtypeCategoricalIndex	DataFrame
DateOffsetDatetimeIndexIndex
MultiIndexSeries	Timestampconcat
date_rangeget_dummiesperiod_range)SparseArrayc                   @   s4   e Zd Zd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&   ^/var/www/html/gps/gps/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   r0   assert_frame_equal)r#   catsexpecteddummiesresultr&   r&   r'   1test_getitem_list_of_labels_categoricalindex_cols3   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
   r0   r1   r2   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_dtypec                 C   s<   t ddggtddgddd}|j}|d }t|| d S )Nr      r@   Bstringr8   r,   )r   r   r@   r0   r1   r#   r%   r>   r<   r&   r&   r'   test_getitem_string_columnsM   s   z'TestGetitem.test_getitem_string_columnsN)__name__
__module____qualname__r(   r6   r?   rE   rK   r&   r&   r&   r'   r      s    r   c                	   @   s   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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)rQ   rQ   rS   z\['y'\] not in indexr   )r   r   r    r!   r"   )r#   r%   r&   r&   r'   test_getitem_list_missing_keyV   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,   foorG   CrF   )
r   r-   r.   r/   r9   r   rB   r2   r0   r:   rJ   r&   r&   r'   test_getitem_list_duplicates`   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   rF   r   rU   r)      ar^   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_colsk   s
   "z*TestGetitemListLike.test_getitem_dupe_colsidx_typec                 C   s   t t| tt| S N)dictzipr   lenlr&   r&   r'   <lambda>x   s    zTestGetitemListLike.<lambda>c                 C   s   t t| tt|  S rf   )rg   rh   r   ri   keysrj   r&   r&   r'   rl   y   s    )r9   iterr   setrg   	dict_keys)idsr   r   rF   c              	   C   sZ  |dkr
|d}}nt tjddtg dddd}d	}|jd |jd
 g}||}t||}t|tt	frRt
t || }	W d    n1 sLw   Y  n|| }	|jd d |f }
|jj|
j_t
|	|
 |||g }tjtdd* t
t ||  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   food   r   ))rW   bar)bazqux)peekaboo)sthsth2rA   r,   )goodrr   r   znot in indexr   )r   r-   r.   r/   r   r   r9   
isinstancero   rg   r0   assert_produces_warningFutureWarningrC   namesr:   r    r!   r"   )r#   re   r   float_frameframemissingrm   idx	idx_checkr>   r<   r&   r&   r'   test_getitem_listlikeq   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 )NrZ   r[   r^   r_   c                 s       | ]}|V  qd S rf   r&   .0rQ   r&   r&   r'   	<genexpr>       zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>r   rF   rF   r   r)   r\   r   r   )r   r2   r0   r:   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 )NrZ   r[   r   c                 s   r   rf   r&   r   r&   r&   r'   r      r   zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>r   r   r)   r\   r_   rF   )rB   r   )r   r2   r
   r0   r1   r   r&   r&   r'   +test_getitem_iloc_two_dimensional_generator   s
   z?TestGetitemListLike.test_getitem_iloc_two_dimensional_generatorc              	   C   s
  t ttdtddtdddd}|jdd }t g d	tg d
dtdddd}t|| t ttdtddtddddd}|jdd }t g d	tg ddtddddd}t|| t ttdtddtdddd}|jdd }t|| d S )Nr+   z
01-01-2022r   )days)r*   freqr   
2022-01-01
2022-01-03)r   r   rF   )r   z
2022-01-02r   zdatetime64[ns])r8   r   rF   )r   hours)z2022-01-01 00:00:00z2022-01-02 02:00:00z2022-01-03 04:00:00r   )minutes)	r   r9   r   r   r   rC   r   r0   r:   rJ   r&   r&   r'   !test_getitem_iloc_dateoffset_days   sH   



z5TestGetitemListLike.test_getitem_iloc_dateoffset_daysN)rL   rM   rN   rT   rY   rd   r    markparametrizer9   rn   r   ro   r   r   r   r   r&   r&   r&   r'   rO   U   s(    
$rO   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&   rQ   r&   r&   r'   rl      s    z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>r@   c                 S   s   ddgS )Nr@   rG   r&   r   r&   r&   r'   rl          rG   r   c                 S   s   g dS )N)TFTr&   r   r&   r&   r'   rl      r   r   rF   )rC   r0   r1   r:   r2   )r#   r   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   rF   r^   r_   r,   )r   r0   r:   rC   )r#   r%   r<   r>   r&   r&   r'   %test_loc_multiindex_columns_one_level   s   z9TestGetitemCallable.test_loc_multiindex_columns_one_levelN)rL   rM   rN   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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@   r\   int64rI   )r   r   rF   r   r   rF   )r   rF   r   T)orderedrG   )r8   rB   r   Fr^   r   )r   r   r   rF   rU   z7Unordered Categoricals can only compare equality or notr   )r   r-   aranger   r   r   r2   r0   r:   r    r!   	TypeError)r#   df3df4r>   r<   rc   r&   r&   r'   (test_getitem_bool_mask_categorical_index   sV   



	"z?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_indexzdata1,data2,expected_datar   rF   r   rU   g      ?r\      rs   rP   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   )axisrF   c                 S   s   i | ]
\}}|t |qS r&   )r-   array)r   icolr&   r&   r'   
<dictcomp>W  s    z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>r   )rF   r   r,   )r   r-   r   r   	enumeraterenamer0   r:   )
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@   rX   D   r   rU   float64r   r8   )r   r-   r   reshape)r#   dupsr%   r&   r&   r'   df_dup_cols[  s   z"TestGetitemBooleanMask.df_dup_colsc              	   C   s   |}d}t jt|d/ tjtdd ||jdk  W d    n1 s%w   Y  W d    d S W d    d S 1 s=w   Y  d S )Nz/cannot reindex on an axis with duplicate labelsr   z
non-uniquer\   )r    r!   
ValueErrorr0   r}   r~   r@   )r#   r   r%   rc   r&   r&   r'   ;test_getitem_boolean_frame_unaligned_with_duplicate_columnsa  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   rU   )r@   rG   rX   r   r   r   r\   )
r   r-   r   r   rX   r   r0   r:   dtypesstrr#   r   r%   r<   r>   r&   r&   r'   2test_getitem_boolean_series_with_duplicate_columnsk  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   r0   r:   r   r   r   r&   r&   r'   1test_getitem_boolean_frame_with_duplicate_columns{  s   zHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsc                 C   s"   t  }||dk }t|| d S )Nr   )r   r0   r:   )r#   r%   r   r&   r&   r'   %test_getitem_empty_frame_with_boolean  s   z<TestGetitemBooleanMask.test_getitem_empty_frame_with_booleanc                 C   sp   t g dg dgg dd}| }|d }d|jd d < |r"|}nt g dg dgg dd}t|| d S )	NrZ   r[   r]   r,   r_   d   )r   rF   r   )rU   r)   r   )r   copyrC   r0   r:   )r#   using_copy_on_writer%   df_origviewr<   r&   r&   r'   5test_getitem_returns_view_when_column_is_unique_in_df  s   zLTestGetitemBooleanMask.test_getitem_returns_view_when_column_is_unique_in_dfc                 C   sR   t g dgtdgdddgd}|tdg }tdgtdgd}t|| d S )N)r   rF   r   rU   KEYrG   rX   r,   r   rA   )r   	frozensetr
   r0   r1   rJ   r&   r&   r'   'test_getitem_frozenset_unique_in_column  s    z>TestGetitemBooleanMask.test_getitem_frozenset_unique_in_columnN)rL   rM   rN   r   r    r   r   r-   nanr   fixturer   r   r   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@rF   r)         r   r   r      )
r-   r   r   r.   r/   r   r2   r0   assert_equalrC   )
r#   frame_or_seriesvaluesr   startendrD   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 )Nr^   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   r0   r}   r~   r:   rJ   r&   r&   r'   test_getitem_datetime_slice  s    z,TestGetitemSlice.test_getitem_datetime_sliceN)rL   rM   rN   r   r   r&   r&   r&   r'   r     s    r   c                   @   s.   e Zd Zejdddhddigdd ZdS )TestGetitemDeprecatedIndexerskeyr^   r_   c                 C   sZ   t ddgddggtddgd}tt ||  W d    d S 1 s&w   Y  d S )Nr   rF   r   rU   )r^   r   )r_   rF   r,   )r   r	   from_tuplesr0   r}   r~   )r#   r   r%   r&   r&   r'   $test_getitem_dict_and_set_deprecated  s   
"zBTestGetitemDeprecatedIndexers.test_getitem_dict_and_set_deprecatedN)rL   rM   rN   r    r   r   r   r&   r&   r&   r'   r     s    r   )ra   numpyr-   r    pandasr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   pandas._testing_testingr0   pandas.core.arraysr   r   rO   r   r   r   r   r&   r&   r&   r'   <module>   s    @;  3,