o
    Eh                     @   s^   d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZ d dlmZ G dd dZdS )    N)IS64is_platform_windows)Categorical	DataFrameSeries
date_rangec                   @   s   e Zd Z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d Zdd Zdd Zdd Zdd Zejdg dejdddgd d! Zd"d# Zd$S )%TestIterationc                 C   s   |  |ju s	J d S N)keyscolumnsselffloat_frame r   Alib/python3.10/site-packages/pandas/tests/frame/test_iteration.py	test_keys   s   zTestIteration.test_keysc                 C   sB   t g dg dgg dd}| D ]\}}t|t jsJ qd S )N                  )ar   br   )r   items
isinstance_constructor_sliced)r   dfkvr   r   r   test_iteritems   s   zTestIteration.test_iteritemsc                 C   sn   g d}t g dg dg|d}t|| D ]\}\}}||ks#J t|ts*J || |k s4J qd S )N)r   r   cr   r   r   )r   zipr   r   r   all)r   Zcolsr    r$   r!   r"   r   r   r   
test_items   s   zTestIteration.test_itemsc                 C   s$   |  D ]\}}|j|ksJ qd S r	   )r   name)r   float_string_framer!   r"   r   r   r   test_items_names&   s   zTestIteration.test_items_namesc                 C   s   t |t |jksJ d S r	   )listr   r   r   r   r   	test_iter*   s   zTestIteration.test_iterc                 C   sT   |  D ]\}}|j| }t|| q|  D ]\}}|j| }t|| qd S r	   )iterrowsloctmassert_series_equal)r   r   r)   r!   r"   expr   r   r   test_iterrows-   s   

zTestIteration.test_iterrowsc                 C   sH   t g dtddddd}| D ]\}}|j| }t|| qd S )N)ZM1701ZM1802ZM1903ZM2004z
2000-01-01r   ZME)ZperiodsZfreq)Znon_iso8601Ziso8601)r   r   r-   r.   r/   r0   )r   sr!   r"   r1   r   r   r   test_iterrows_iso86016   s   
z#TestIteration.test_iterrows_iso8601c              	   C   s   t tdddgd gd gdgg gt gi gd}ttdddd d dg t i gtdddd}t| \}}t|| d S )	Ni  r    )r   r   r$   defgZabcdefgr   object)indexr(   Zdtype)	r   datetimesetr   r+   nextr-   r/   r0   )r   r    expected_resultr   r   r   test_iterrows_cornerB   s$   z"TestIteration.test_iterrows_cornerc                 C   s\   t | D ]%\}}t|dd  }|d |_|j|d d f jdd}t|| qd S )Nr   r   T)Zdrop)		enumerate
itertuplesr   r   r(   ZilocZreset_indexr/   r0   )r   r   itupZserr?   r   r   r   test_itertuplesX   s   
zTestIteration.test_itertuplesc                 C   sP   t tjddtddddgd}|jddD ]}t|d	 ts%J qd S )
Nr   r   )floatsintsrH   rI   r   Fr;   r   )	r   npZrandomZdefault_rngZstandard_normalrangerD   r   intr   r    rF   r   r   r   test_itertuples_index_false_   s   z)TestIteration.test_itertuples_index_falsec                 C   sn   t g dg ddd}|ddg }t| g dksJ t s1tr3tt|jd ddks5J d S d S d S )	Nr   r   r   r   datar   ))r   r   r   )r   r   r   )r   r   r   r(   z![(0, 1, 4), (1, 2, 5), (2, 3, 6)])r   r+   rD   r   r   repr)r   r    Zdfaar   r   r   test_itertuples_duplicate_colsh   s   
z,TestIteration.test_itertuples_duplicate_colsc                 C   sd   t g dg ddd}t|jdd}|jdksJ |j|j|jf|ks'J t|jdks0J d S )Nr   r   rP   rQ   TestNamerS   )Indexr   r   )	r   r>   rD   _fieldsrW   r   r   type__name__rN   r   r   r   test_itertuples_tuple_nameu   s
   z(TestIteration.test_itertuples_tuple_namec                 C   sF   t g dg ddd}t|jdd}|dksJ |jdks!J d S )	Nr   r   )defreturnrQ   rV   rS   )r   r   r   )rW   Z_1Z_2)r   r>   rD   rX   )r   r    Ztup2r   r   r   %test_itertuples_disallowed_col_labels|   s   z3TestIteration.test_itertuples_disallowed_col_labelslimit)      i   r;   TFc                 C   sH   t dd t|D g}t|j|d}t|tsJ t|ds"J d S )Nc                 S   s   i | ]}d | d| qS )Zfoo_Zbar_r   ).0rE   r   r   r   
<dictcomp>   s    zNTestIteration.test_itertuples_py2_3_field_limit_namedtuple.<locals>.<dictcomp>rJ   rX   )r   rL   r>   rD   r   tuplehasattr)r   r_   r;   r    rA   r   r   r   ,test_itertuples_py2_3_field_limit_namedtuple   s   z:TestIteration.test_itertuples_py2_3_field_limit_namedtuplec           	      C   s   t g dg dd}t|d |d< t|jj}t|jj }t	|| |j
ddD ]}t| q.| D ]\}}t| q9| D ]\}}t| qFd S )N)r   r   r   r   r   r   )r   r   r   r   r   r7   )id	raw_graderh   gradeFrJ   )r   r   r+   ri   valuesrK   Zarraytolistr/   Zassert_almost_equalrD   strr-   r   )	r   r    rA   r?   trowr3   r$   colr   r   r   #test_sequence_like_with_categorical   s   


z1TestIteration.test_sequence_like_with_categoricalN)rZ   
__module____qualname__r   r#   r'   r*   r,   r2   r4   rB   rG   rO   rU   r[   r^   pytestZmarkZparametrizerf   rp   r   r   r   r   r      s$    			r   )r<   ZnumpyrK   rs   Zpandas.compatr   r   Zpandasr   r   r   r   Zpandas._testingZ_testingr/   r   r   r   r   r   <module>   s    