U
    `»{j>:  ã                   @   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   s^   t dddgddggddgddggd�}td	td
ƒ|d�}tjtdd�� |d  W 5 Q R X d S )NZa_lotZonlyoneZ
notevenonei²  Ú é   r   )ÚlevelsÚcodeséÿÿÿÿé   )ÚindexÚcolumns©Úmatch)r	   r   ÚrangeÚpytestÚraisesÚKeyError)ÚselfÚmiÚdf© r#   úg/var/www/html/bwave/python/venv/lib/python3.8/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   Zuint8)Údtyper   r   )r   r   r   r   Úlistr   r-   Úassert_frame_equal)r    ZcatsÚexpectedZ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
   r-   r.   r/   Úloc)r    Údatar"   r7   r8   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©r4   r)   )r   r   r:   r-   r.   ©r    r"   r8   r7   r#   r#   r$   Útest_getitem_string_columnsM   s    z'TestGetitem.test_getitem_string_columnsN)Ú__name__Ú
__module__Ú__qualname__r%   r3   r9   r?   rE   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ddddddgd�ej dddg¡dd„ ƒƒZdd„ Zdd„ Zdd„ ZdS )ÚTestGetitemListLikec              	   C   sN   t dgdgdgdœƒ}dddg|_tjtdd�� |dd	dg  W 5 Q R X d S )
Ng      ð?g       @ç      @)ÚxÚyÚzrK   rM   z\['y'\] not in indexr   rL   )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>t‚|jd d …dd …f }t	 
||¡ d S )Né   ZAABCr)   ÚfoorA   ÚCr@   )r   r*   r+   r,   r5   r   r<   ÚAssertionErrorr/   r-   r6   rD   r#   r#   r$   Útest_getitem_list_duplicates`   s    z0TestGetitemListLike.test_getitem_list_duplicatesc              	   C   sT   t dddgdddggdddgd	�}d
}tjtt |¡d�� |dg  W 5 Q R X d S )Nr   r@   r   rO   r&   é   ÚaÚbr)   z?"None of [Index(['baf'], dtype='object')] are in the [columns]"r   Z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   ó    zTestGetitemListLike.<lambda>c                 C   s   t t| tt| ƒƒƒƒ ¡ S r\   )r]   r^   r   r_   Úkeysr`   r#   r#   r$   rb   y   rc   r5   Úiterr   Úsetr]   Ú	dict_keys)Zidsr   r   r@   c              
   C   s  |dkr|d }}n(t tj dd¡tdddgdd	�d
�}d}|jd |jd g}||ƒ}t||ƒƒ}t|tt	fƒr’t
 t¡� || }	W 5 Q R X n|| }	|jd d …|f }
|jj|
j_t
 |	|
¡ |||g ƒ}tjtdd��$ t
 t¡� ||  W 5 Q R X W 5 Q R X d S )Nr   Úfoodé   r   )rP   Úbar)ZbazZqux)ÚpeekZaboo)ZsthZsth2r;   r)   )Zgoodrh   r   znot in indexr   )r   r*   r+   r,   r   r   r5   Ú
isinstancerf   r]   r-   Úassert_produces_warningÚFutureWarningr=   Únamesr6   r   r   r   )r    r[   r   Úfloat_frameÚframeÚmissingrd   ÚidxZ	idx_checkr8   r7   r#   r#   r$   Útest_getitem_listlikeq   s0    þþz)TestGetitemListLike.test_getitem_listlikec                 C   s`   t dddgdddgdœƒ}dd	„ d
D ƒ}|j| }t ddgddgdœddgd�}t ||¡ d S )Nr   r@   r   rO   r&   rT   ©rU   rV   c                 s   s   | ]
}|V  qd S r\   r#   ©Ú.0rK   r#   r#   r$   Ú	<genexpr>¥   s     zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>©r   r@   ©r   )r   r/   r-   r6   ©r    r"   Zindexerr8   r7   r#   r#   r$   Útest_getitem_iloc_generator¢   s
    
z/TestGetitemListLike.test_getitem_iloc_generatorc                 C   s\   t dddgdddgdœƒ}dd	„ d
D ƒ}|j|df }tddgdddgd�}t ||¡ d S )Nr   r@   r   rO   r&   rT   ru   c                 s   s   | ]
}|V  qd S r\   r#   rv   r#   r#   r$   rx   ¬   s     zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>ry   rV   )r<   r   )r   r/   r
   r-   r.   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 d	dd
gtdddgdtdd�d�d�}t ||¡ t ttdƒƒtddtdd
d�d�d�}|jdd… }t d	dd
gtdddg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'   Úfreqrz   z
2022-01-01z
2022-01-03r   r@   z
2022-01-02zdatetime64[ns])r4   r   )r~   Úhoursz2022-01-01 00:00:00z2022-01-02 02:00:00z2022-01-03 04:00:00r   )Úminutes)	r   r5   r   r   r   r=   r   r-   r6   rD   r#   r#   r$   Ú!test_getitem_iloc_dateoffset_days±   sL    
þýþ
  
ÿþ
ýþ
þz5TestGetitemListLike.test_getitem_iloc_dateoffset_daysN)rF   rG   rH   rN   rS   rZ   r   ÚmarkÚparametrizer5   re   r   rf   rt   r|   r}   r‚   r#   r#   r#   r$   rI   U   s&   
úö$rI   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#   ©rK   r#   r#   r$   rb   Þ   rc   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>r:   c                 S   s   ddgS )Nr:   rA   r#   r†   r#   r#   r$   rb   â   rc   rA   r   c                 S   s
   dddgS )NTFr#   r†   r#   r#   r$   rb   ç   rc   r   r@   )r=   r-   r.   r6   r/   )r    rp   r8   r7   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@   rU   rV   r)   )r   r-   r6   r=   )r    r"   r7   r8   r#   r#   r$   Ú%test_loc_multiindex_columns_one_levelë   s    z9TestGetitemCallable.test_loc_multiindex_columns_one_levelN)rF   rG   rH   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ddddddgtdddgdd	�d
d�d�}t dtjddd�itddddddgtdddgdd	�d
d�d�}||jdk }|jg  }t ||¡ ||jdk }|jg  }t ||¡ ||jdk }|jdddg }t ||¡ ||jdk }|jdddg }t ||¡ ||jdk  }|jdg }t ||¡ ||jdk }|jg  }t ||¡ d}t	j
t|d�� ||jdk   W 5 Q R X t	j
t|d�� ||jdk  W 5 Q R X d S )Nr:   rT   Zint64rC   r   r@   r   T)ÚorderedrA   )r4   r<   rz   FrU   r   rO   z7Unordered Categoricals can only compare equality or notr   )r   r*   Úaranger   r   r   r/   r-   r6   r   r   Ú	TypeError)r    Zdf3Zdf4r8   r7   rY   r#   r#   r$   Ú(test_getitem_bool_mask_categorical_indexø   sV     ÿýü
 ÿýü


	z?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_indexzdata1,data2,expected_datar   r@   r   rO   g      à?rT   é   ri   rJ   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)rw   ÚiÚcolr#   r#   r$   Ú
<dictcomp>W  s      z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>r   )r@   r   r)   )r   r*   r�   r   Ú	enumerateÚrenamer-   r6   )
r    Zdata1Zdata2Zexpected_dataZdf1Údf2r"   r8   Zexdictr7   r#   r#   r$   Ú5test_getitem_bool_mask_duplicate_columns_mixed_dtypes:  s    zLTestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypesc                 C   s,   ddddg}t t d¡ dd¡|dd�}|S )	Nr:   rQ   ÚDé   r   rO   Úfloat64©r   r4   )r   r*   r‹   Úreshape)r    Zdupsr"   r#   r#   r$   Údf_dup_cols[  s    z"TestGetitemBooleanMask.df_dup_colsc              
   C   sN   |}d}t jt|d��. tjtdd�� ||jdk  W 5 Q R X W 5 Q R X d S )Nz/cannot reindex on an axis with duplicate labelsr   z
non-uniquerT   )r   r   Ú
ValueErrorr-   rm   rn   r:   )r    rœ   r"   rY   r#   r#   r$   Ú;test_getitem_boolean_frame_unaligned_with_duplicate_columnsa  s
    zRTestGetitemBooleanMask.test_getitem_boolean_frame_unaligned_with_duplicate_columnsc                 C   sj   t t d¡ dd¡ddddgdd	�}||jd
k }|j|_|}||jd
k }t ||¡ |j t	|ƒ d S ©Nr˜   r   rO   r:   rA   rQ   r—   r™   rš   rT   )
r   r*   r‹   r›   rQ   r   r-   r6   ÚdtypesÚstr©r    rœ   r"   r7   r8   r#   r#   r$   Ú2test_getitem_boolean_series_with_duplicate_columnsk  s     
 ÿzITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsc                 C   sf   t t d¡ dd¡ddddgdd	�}||d
k }|j|_|}||d
k }t ||¡ |j t|ƒ d S rŸ   )	r   r*   r‹   r›   r   r-   r6   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   r-   r6   )r    r"   r•   r#   r#   r$   Ú%test_getitem_empty_frame_with_booleanŒ  s    z<TestGetitemBooleanMask.test_getitem_empty_frame_with_booleanc                 C   s|   t dddgdddggdddgd	�}| ¡ }|d }d
|jd d …< |rJ|}n"t ddd
gddd
ggdddgd	�}t ||¡ d S )Nr   r@   r   rO   r&   rT   rU   rV   r)   éd   )r   Úcopyr=   r-   r6   )r    Zusing_copy_on_writer"   Zdf_origÚviewr7   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   sV   t ddddggtdgƒdddgd�}|tdgƒ }tdgtdgƒd	�}t ||¡ d S )
Nr   r@   r   rO   ZKEYrA   rQ   r)   r;   )r   Ú	frozensetr
   r-   r.   rD   r#   r#   r$   Ú'test_getitem_frozenset_unique_in_column¡  s    $z>TestGetitemBooleanMask.test_getitem_frozenset_unique_in_columnN)rF   rG   rH   r�   r   rƒ   r„   r*   Únanr–   Zfixturerœ   rž   r£   r¤   r¥   r©   r«   r#   r#   r#   r$   r‰   ÷   s,   B ýýúþ


r‰   c                   @   s   e Z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k	rL|d d …df }|||d	�}|||… }|jdd
… }	t ||	¡ |j	||… }t ||	¡ d S )Ng      $@g      I@r@   r&   é   é   r   r   rz   é   )
r*   r‹   r   r+   r,   r   r/   r-   Zassert_equalr=   )
r    Zframe_or_seriesÚvaluesr   ÚstartÚendr>   Úobjr8   r7   r#   r#   r$   Útest_getitem_slice_float64ª  s    z+TestGetitemSlice.test_getitem_slice_float64c              	   C   sh   t dditddddgƒd�}t t¡� |dd	… }W 5 Q R X t dditdddgƒd�}t ||¡ d S )
NrU   r   z11.01.2011 22:00z11.01.2011 23:00z12.01.2011 00:00z2011-01-13 00:00rz   z
2011-01-01z
2011-11-01)r   r   r-   rm   rn   r6   rD   r#   r#   r$   Útest_getitem_datetime_slice½  s&    üÿþÿþz,TestGetitemSlice.test_getitem_datetime_sliceN)rF   rG   rH   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ÚkeyrU   rV   c              	   C   sD   t ddgddggt ddg¡d�}t t¡� ||  W 5 Q R X d S )Nr   r@   r   rO   )rU   r   )rV   r@   r)   )r   r	   Úfrom_tuplesr-   rm   rn   )r    r¸   r"   r#   r#   r$   Ú$test_getitem_dict_and_set_deprecatedÖ  s     ÿzBTestGetitemDeprecatedIndexers.test_getitem_dict_and_set_deprecatedN)rF   rG   rH   r   rƒ   r„   rº   r#   r#   r#   r$   r·   Õ  s   r·   )rW   Únumpyr*   r   Zpandasr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr-   Zpandas.core.arraysr   r   rI   r…   r‰   r­   r·   r#   r#   r#   r$   Ú<module>   s   @;  3,