a
    Pf:                     @   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   sp   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    n1 sb0    Y  d S )N)Za_lotZonlyone
notevenonei      r   )levelscodes   )indexcolumnsr   match)r	   r   rangepytestraisesKeyError)selfmidf r$   a/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/frame/indexing/test_getitem.py test_getitem_unused_level_raises   s    z,TestGetitem.test_getitem_unused_level_raisesc                 C   sr   t ddd}ttjdd|d}||d  }t||jd d df  |d }t||jd d df  d S )Nz1/1/2000   )periods   )
   r'   r   r   )	r   r   nprandomdefault_rngstandard_normaltmassert_series_equaliloc)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   bool)dtyper   r   )r   r   r   r   listr   r0   assert_frame_equal)r!   ZcatsexpectedZdummiesresultr$   r$   r%   1test_getitem_list_of_labels_categoricalindex_cols0   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_dtype9   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)   r=   Bstringr7   r+   )r   r   r=   r0   r1   r!   r#   r;   r:   r$   r$   r%   test_getitem_string_columnsH   s    z'TestGetitem.test_getitem_string_columnsN)__name__
__module____qualname__r&   r5   r<   rB   rG   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    n1 sP0    Y  d S )Ng      ?g       @      @)xyz)rM   rM   rO   z\['y'\] not in indexr   )r   r   r   r   r    r!   r#   r$   r$   r%   test_getitem_list_missing_keyQ   s    
z1TestGetitemListLike.test_getitem_list_missing_keyc                 C   sh   t tjddtdd}d|j_|ddg }|jjdksBJ |jd d dd f }t	
|| d S )Nr)   )   rR   ZAABCr+   foorC   C)r   r,   r-   r.   r/   r8   r   r?   r2   r0   r9   rF   r$   r$   r%   test_getitem_list_duplicates[   s    z0TestGetitemListLike.test_getitem_list_duplicatesc                 C   sb   t g dg dgg dd}d}tjtt|d |dg  W d    n1 sT0    Y  d S )Nr   r)   r   rR   r'      arZ   br+   z"None of [Index(['baf'], dtype=r   Zbaf)r   r   r   r    reescape)r!   r#   msgr$   r$   r%   test_getitem_dupe_colsh   s    z*TestGetitemListLike.test_getitem_dupe_colsidx_typec                 C   s   t t| tt| S N)dictzipr   lenkeysr$   r$   r%   <lambda>u       zTestGetitemListLike.<lambda>c                 C   s   t t| tt|  S ra   )rb   rc   r   rd   rf   re   r$   r$   r%   rg   v   rh   )r8   iterr   setrb   	dict_keys)Zidsr   r   r)   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||}t|t	t
frtjtdd ||  W d    n1 s0    Y  d S || }	|jd d |f }
|jj|
j_t|	|
 |||g }tjtdd ||  W d    n1 s0    Y  d S )Nr   foodr)   )   r   ))rS   bar)ZbazZqux)peekZaboo)ZsthZsth2r>   r+   )Zgoodrl   r   as an indexer is not supportedr   znot in index)r   r,   r-   r.   r/   r   r   r8   
isinstancerj   rb   r   r   	TypeErrorr@   namesr0   r9   r    )r!   r`   r   float_frameframemissingrf   idxZ	idx_checkr;   r:   r$   r$   r%   test_getitem_listliken   s0    &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 )NrV   rW   rZ   r[   c                 s   s   | ]
}|V  qd S ra   r$   .0rM   r$   r$   r%   	<genexpr>   rh   zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>r   r)   r)   r   r'   rX   r   r   )r   r2   r0   r9   r!   r#   Z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 )NrV   rW   ry   c                 s   s   | ]
}|V  qd S ra   r$   rz   r$   r$   r%   r|      rh   zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>r}   r   r'   rX   r[   r)   )r?   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   r)   )r   z
2022-01-02r   zdatetime64[ns])r7   r   r)   )r   hours)z2022-01-01 00:00:00z2022-01-02 02:00:00z2022-01-03 04:00:00r   )minutes)	r   r8   r   r   r   r@   r   r0   r9   rF   r$   r$   r%   !test_getitem_iloc_dateoffset_days   sH    



z5TestGetitemListLike.test_getitem_iloc_dateoffset_daysN)rH   rI   rJ   rQ   rU   r_   r   markparametrizer8   ri   r   rj   rx   r   r   r   r$   r$   r$   r%   rK   P   s&   
%rK   c                   @   s   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$   rM   r$   r$   r%   rg      rh   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>r=   c                 S   s   ddgS )Nr=   rC   r$   r   r$   r$   r%   rg      rh   rC   r   c                 S   s   g dS )N)TFTr$   r   r$   r$   r%   rg      rh   r   r)   )r@   r0   r1   r9   r2   )r!   rt   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   r)   rZ   r[   r+   )r   r0   r9   r@   )r!   r#   r:   r;   r$   r$   r%   %test_loc_multiindex_columns_one_level   s    z9TestGetitemCallable.test_loc_multiindex_columns_one_levelN)rH   rI   rJ   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 s0    Y  t	j
t|d ||jdk  W d    n1 s0    Y  d S )Nr=   rX   Zint64rE   )r   r   r)   r   r   r)   )r   r)   r   T)orderedrC   )r7   r?   r~   FrZ   r   )r   r   r   r)   rR   z7Unordered Categoricals can only compare equality or notr   )r   r,   aranger   r   r   r2   r0   r9   r   r   rr   )r!   Zdf3Zdf4r;   r:   r^   r$   r$   r%   (test_getitem_bool_mask_categorical_index   sR    



	.z?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_indexzdata1,data2,expected_datar   r)   r   rR   g      ?rX      rm   rL   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   )Zaxisr)   c                 S   s   i | ]\}}|t |qS r$   )r,   array)r{   icolr$   r$   r%   
<dictcomp>T  rh   z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>r   )r)   r   r+   )r   r,   r   r   	enumeraterenamer0   r9   )
r!   Zdata1Zdata2Zexpected_dataZdf1df2r#   r;   Zexdictr:   r$   r$   r%   5test_getitem_bool_mask_duplicate_columns_mixed_dtypes7  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=   rT   D   r   rR   float64r   r7   )r   r,   r   reshape)r!   Zdupsr#   r$   r$   r%   df_dup_colsX  s    z"TestGetitemBooleanMask.df_dup_colsc                 C   sH   |}d}t jt|d ||jdk  W d    n1 s:0    Y  d S )Nz/cannot reindex on an axis with duplicate labelsr   rX   )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   sX   t tdddg ddd}||jdk }|j|_|}||jdk }t|| d S Nr   r   rR   )r=   rC   rT   r   r   r   rX   )r   r,   r   r   rT   r   r0   r9   r!   r   r#   r:   r;   r$   r$   r%   2test_getitem_boolean_series_with_duplicate_columnsg  s    zITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsc                 C   sT   t tdddg ddd}||dk }|j|_|}||dk }t|| d S r   )r   r,   r   r   r   r0   r9   r   r$   r$   r%   1test_getitem_boolean_frame_with_duplicate_columnsu  s    zHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsc                 C   s"   t  }||dk }t|| d S )Nr   )r   r0   r9   )r!   r#   r   r$   r$   r%   %test_getitem_empty_frame_with_boolean  s    z<TestGetitemBooleanMask.test_getitem_empty_frame_with_booleanc                 C   s   t g dg dgg dd}| }|d }t| d|jd d < W d    n1 sZ0    Y  |rn|}nt g dg dgg dd}t|| d S )	NrV   rW   rY   r+   r[   d   )r   r)   r   )rR   r'   r   )r   copyr0   Zassert_cow_warningr@   r9   )r!   Zusing_copy_on_writeZwarn_copy_on_writer#   Z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   r)   r   rR   ZKEYrC   rT   r+   r   r>   )r   	frozensetr
   r0   r1   rF   r$   r$   r%   'test_getitem_frozenset_unique_in_column  s     z>TestGetitemBooleanMask.test_getitem_frozenset_unique_in_columnN)rH   rI   rJ   r   r   r   r   r,   nanr   Zfixturer   r   r   r   r   r   r   r$   r$   r$   r%   r      s,   A 

	r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestGetitemSlicec           
      C   s   t ddd}t|}|ddg \}}t jdd}|turP|d d df }|||d}||| }|jdd	 }	t	||	 |j
|| }t	||	 d S )
Ng      $@g      I@r)   r'      )   r   r   r~      )r,   r   r   r-   r.   r/   r   r2   r0   Zassert_equalr@   )
r!   Zframe_or_seriesvaluesr   startendrA   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jtdd |dd  W d    n1 sH0    Y  d S )	NrZ   r   )z11.01.2011 22:00z11.01.2011 23:00z12.01.2011 00:00z2011-01-13 00:00r~   z,Value based partial slicing on non-monotonicr   z
2011-01-01z
2011-11-01)r   r   r   r   r    rP   r$   r$   r%   test_getitem_datetime_slice  s    z,TestGetitemSlice.test_getitem_datetime_slicec                 C   sb   t tjdd}|jtd d df }|jdks8J |jtd d dtd f }t	|| d S )Nr)   )r*   rm   )r'   rm   )
r   r,   r-   r.   r/   r2   sliceshaper0   r9   rF   r$   r$   r%   )test_getitem_slice_same_dim_only_one_axis  s
    z:TestGetitemSlice.test_getitem_slice_same_dim_only_one_axisN)rH   rI   rJ   r   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keyrZ   r[   c                 C   s\   t ddgddggtddgd}tjtdd	 ||  W d    n1 sN0    Y  d S )
Nr   r)   r   rR   )rZ   r   )r[   r)   r+   rp   r   )r   r	   from_tuplesr   r   rr   )r!   r   r#   r$   r$   r%   $test_getitem_dict_and_set_deprecated  s
    zBTestGetitemDeprecatedIndexers.test_getitem_dict_and_set_deprecatedN)rH   rI   rJ   r   r   r   r   r$   r$   r$   r%   r     s   r   )r\   numpyr,   r   Zpandasr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr0   Zpandas.core.arraysr   r   rK   r   r   r   r   r$   r$   r$   r%   <module>   s   @6 
 -/