o
    �¨Êhò¦ ã                   @   sÎ  d dl m Z  d dlZd dlmZ d dlZd dlZd dlZd dlmZm	Z	 d dl
m  mZ d dlm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" d dl#m$  m%Z& ej' (d¡Z)d	d
„ Z*dd„ Z+ej' ,dg d¢¡dd„ ƒZ-dd„ Z.dd„ Z/dd„ Z0dd„ Z1ej' ,dddg¡dd„ ƒZ2dd„ Z3d d!„ Z4d"d#„ Z5ej' ,dg d$¢¡d%d&„ ƒZ6d'd(„ Z7d)d*„ Z8d+d,„ Z9d-d.„ Z:d/d0„ Z;d1d2„ Z<d3d4„ Z=d5d6„ Z>d7d8„ Z?ej' ,d9d:d;„ d<d;„ g¡d=d>„ ƒZ@d?d@„ ZAdAdB„ ZBdCdD„ ZCdEdF„ ZDdGdH„ ZEdIdJ„ ZFdKdL„ ZGdMdN„ ZHdOdP„ ZIdQdR„ ZJdSdT„ ZKdUdV„ ZLdWdX„ ZMej' ,dYdZd[g¡d\d]„ ƒZNej' ,dYg d^¢¡ej' ,d_ddg¡d`da„ ƒƒZOdbdc„ ZPddde„ ZQdfdg„ ZRdhdi„ ZSdjdk„ ZTdldm„ ZUdndo„ ZVdpdq„ ZWdrds„ ZXdtdu„ ZYdvdw„ ZZdxdy„ Z[dzd{„ Z\d|d}„ Z]d~d„ Z^d€d�„ Z_d‚dƒ„ Z`d„d…„ Zad†d‡„ Zbdˆd‰„ ZcdŠd‹„ ZddŒd�„ ZedŽd�„ Zfd�d‘„ Zgd’d“„ Zhd”d•„ Zid–d—„ Zjd˜d™„ Zkdšd›„ Zldœd�„ ZmdždŸ„ Znd d¡„ Zod¢d£„ Zpd¤d¥„ Zqd¦d§„ Zrd¨d©„ Zsdªd«„ Ztd¬d­„ Zud®d¯„ Zvej' ,d°d±d±d²gg¡d³d´„ ƒZwdµd¶„ Zxd·d¸„ Zyd¹dº„ Zzd»d¼„ Z{d½d¾„ Z|d¿dÀ„ Z}dÁdÂ„ Z~dÃdÄ„ Zej' ,dÅdÆdÇdÈdÆdÇgdÆdÈgg¡ej' ,dÉdÊdËdÊdËgg¡dÌdÍ„ ƒƒZ€dÎdÏ„ Z�ej' ,dÐdÑdÑgg¡ej' ,dÒd±gd±d²gg¡ej'j,dÓdgd gdÔgdÕged gƒed ƒged dÖdÖd×dØ�ej‚dÙdÚdÛdÜ�ejƒd gdÝdÞ�ejƒd gdßdÞ�ejƒdgdàdÞ�gg dá¢dâ�ej' ,dãg dä¢¡ej' ,d9g då¢¡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ødùdùgg¡dúdû„ ƒZ�ej' ,düdýdþddedÿƒe�d ƒddgif�ddþedÿƒe�d ƒe�dƒe�dƒe�dƒe�dƒgif�ddþedÿƒe�d ƒedÿƒe�d ƒe�dƒe�dƒgifg¡�d�d„ ƒZŽ�d�d„ Z��d	�d
„ Z��d�d„ Z‘�d�d„ Z’�d�d„ Z“ej' ,�dg �d¢¡�d�d„ ƒZ”�d�d„ Z•ej' ,�de�ddÕfeddfe�ddfe�ddfe�ddfe�ddfe�ddÕfeddfe�ddfe�ddfe�ddfe�ddfg¡�d�d„ ƒZ–�d�d „ Z—ej' ,�d!g �d"¢¡�d#�d$„ ƒZ˜ej' ,�d%dej™de š�d&¡�d'�g¡�d(�d)„ ƒZ›�d*�d+„ Zœej' ,�d,�d-�d.�d/gf�d0�d1�d2gfg¡�d3�d4„ ƒZ��d5�d6„ Zž�d7�d8„ ZŸ�d9�d:„ Z �d;�d<„ Z¡�d=�d>„ Z¢ej' ,d_ddg¡�d?�d@„ ƒZ£�dA�dB„ Z¤�dC�dD„ Z¥�dE�dF„ Z¦�dG�dH„ Z§�dI�dJ„ Z¨�dK�dL„ Z©ej' ,deªej™�dMe š�d&¡�d'�g¡�dN�dO„ ƒZ«�dP�dQ„ Z¬�dR�dS„ Z­ej' ,�dTddÕdÕgg¡�dU�dV„ ƒZ®�dW�dX„ Z¯ej' ,�dYd gdf�dZd gdf�d[g¡�d\�d]„ ƒZ°ej' ,�d!g �d^¢¡�d_�d`„ ƒZ±ej' ,�da�db�dcg¡�dd�de„ ƒZ²ej' ,�df�dg�dhg¡�di�dj„ ƒZ³ej' ,�dk�dldej´fg¡�dm�dn„ ƒZµej' ,�dog �dp¢g �dq¢g �dr¢fg �ds¢g �dt¢g �du¢fg¡�dv�dw„ ƒZ¶ej' ,�dxg �dy¢¡�dz�d{„ ƒZ·ej' (�d|¡ej' ,dãg �d}¢¡�d~�d„ ƒƒZ¸�d€�d�„ Z¹�d‚�dƒ„ Zºej' ,d_ddg¡�d„�d…„ ƒZ»�d†�d‡„ Z¼ej' ,�dˆdÖdÕg¡�d‰�dŠ„ ƒZ½ej' ,dãg �d‹¢¡�dŒ�d�„ ƒZ¾�dŽ�d�„ Z¿�d��d‘„ ZÀ�d’�d“„ ZÁej' ,�d”ddg¡ej' ,�d•�d–�d—dÕgdÖeÂf�d—dÕg�d˜df�d™�dd gdÖeÂf�dd g�d˜dfg¡�dš�d›„ ƒƒZÃ�dœ�d�„ ZÄ�dž�dŸ„ ZÅ�d �d¡„ ZÆej' ,�d”ddg¡�d¢�d£„ ƒZÇdS (¤  é    )ÚdatetimeN)ÚDecimal)ÚPerformanceWarningÚSpecificationError)Úis_string_dtype)ÚCategoricalÚ	DataFrameÚGrouperÚIndexÚIntervalÚ
MultiIndexÚ
RangeIndexÚSeriesÚ	TimedeltaÚ	TimestampÚ
date_rangeÚto_datetime)ÚBooleanArrayz)ignore:Mean of empty slice:RuntimeWarningc                  C   s$   t tddd�ƒ} d}| |ksJ ‚d S )NÚAÚB)ÚkeyÚlevelz<Grouper(key='A', level='B', axis=0, sort=False, dropna=True))Úreprr	   )ÚresultÚexpected© r   úS/var/www/html/env/lib/python3.10/site-packages/pandas/tests/groupby/test_groupby.pyÚ	test_repr'   s   r   c           
      C   sØ   t jddd�}t|ƒ}|d d d…  d9  < | d¡ ¡ }|tdƒ |d< |tdd	d
� |d< t j|jd< | t	t
dƒƒd ¡}| ¡ }tdƒ}tdƒ}t|d ||||gt d¡d�}t|||dœƒ}	t ||	¡ d S )Nz1 Dayé'  ©Úperiodsé   é   r   r   r   ÚUTC©ÚtzÚCéÿÿÿÿiÐ  z2887 days 11:21:02.326710176z2886 days 00:42:34.664668096©Úindex©r   r   r&   )ÚpdÚtimedelta_ranger   Úto_frameÚcopyr   ÚNaTÚilocÚgroupbyÚlistÚrangeÚstdr   ÚnpÚaranger   ÚtmÚassert_frame_equal)
Úwarn_copy_on_writeÚtdiÚserÚdfÚgbr   Útd1Útd4Úexp_serr   r   r   r   Útest_groupby_std_datetimelike.   s    rA   Údtype)Úint64Úint32Úfloat64Úfloat32c                    s8  t t d¡d t d¡| d�}t d¡}tj d¡ |¡ | |¡}|jdd„ dd�}|D ]\}}t|ƒdks9J ‚q-d	}t	j
t|d
�� | tj¡}W d   ƒ n1 sTw   Y  |d dksaJ ‚d	}t	j
t|d
�� | tj¡}W d   ƒ n1 s{w   Y  t	 ||¡ t	 || ¡ ¡ | ¡ }	d}t	j
t|d
�� | tj¡}W d   ƒ n1 s¬w   Y  t	 |	|¡ | dd„ ¡}| dd„ ¡}
|
d dksÍJ ‚t	 |
|¡ | |¡}d	}t	j
t|d
�� | tj¡}	W d   ƒ n1 sòw   Y  t	j|	|dd� d}t	j
t|d
�� | tjtjg¡}W d   ƒ n	1 �sw   Y  d}tjt|d
�� | tjtjdœ¡ W d   ƒ n	1 �sAw   Y  ddddœ‰ d}t	j
t|d
�� | ‡ fdd„¡}W d   ƒ n	1 �sjw   Y  |d dk�sxJ ‚d}tjt|d
�� | dd„ ¡ W d   ƒ d S 1 �s•w   Y  d S )Né	   é   ©r)   rB   r"   c                 S   s   | d S ©NrH   r   ©Úxr   r   r   Ú<lambda>Q   ó    z)test_basic_aggregations.<locals>.<lambda>F©Ú
group_keyszusing SeriesGroupBy.mean©Úmatché   zusing SeriesGroupBy.sumc                 S   ó   | |   ¡  S ©N©ÚsumrK   r   r   r   rM   f   ó    c                 S   rT   rU   rV   rK   r   r   r   rM   g   rX   é   é   ©Úcheck_index_typezusing SeriesGroupBy.[mean|std]únested renamer is not supported)ÚoneÚtwoé
   é   é   ©r   rS   r"   z„Pinning the groupby key to each group in SeriesGroupBy.agg is deprecated, and cases that relied on it will raise in a future versionc                    s   ˆ | j  |  ¡  S rU   )ÚnameÚmeanrK   ©Úgroup_constantsr   r   rM   �   ó    é   zMust produce aggregated valuec                 S   s   | d S ©Nr"   r   rK   r   r   r   rM   ˆ   rN   )r   r5   r6   ÚrandomÚdefault_rngÚshuffleÚreindexr1   Úlenr7   Úassert_produces_warningÚFutureWarningÚ	aggregatere   ÚaggÚassert_series_equalrW   ÚapplyÚ	transformr4   ÚpytestÚraisesr   Ú	Exception)rB   Údatar)   ÚgroupedÚkÚvÚmsgÚaggedr   r   ÚtransformedÚvalue_groupedr   rf   r   Útest_basic_aggregationsI   sj   

ÿÿÿ
ÿÿÿÿþ$ÿr‚   c                 C   sj   | j jd }|  |¡}| ¡ }|  | d¡¡ ¡ }|j jtjks"J ‚|j jtjks+J ‚t	j
||dd� d S )Nr   ÚOFr[   )r)   Úcodesr1   rW   ÚastyperB   r5   Úint8rC   r7   r8   )Ú multiindex_dataframe_random_datar   r{   r   r   r   r   r   Útest_groupby_nonobject_dtype‹   s   
rˆ   c                  C   s¶   t g d¢g d¢tj d¡ d¡tjtj d¡ d¡dd�dœƒ} tt| ƒƒ| d< d	d
„ }d}tj	t
|d�� |  d¡ |¡}W d   ƒ n1 sHw   Y  |j}| j}t ||¡ d S )N©ÚfooÚbarrŠ   r‹   rŠ   r‹   rŠ   rŠ   )r^   r^   r_   Úthreer_   r_   r^   rŒ   r"   é   rF   ©rB   ©r   r   r&   ÚDÚvaluec                 S   s   | j | d  ¡  S )Nr‘   )ÚlocÚidxmax©Úgroupr   r   r   Ú	max_value¢   ó   z5test_groupby_nonobject_dtype_mixed.<locals>.max_valueú7DataFrameGroupBy.apply operated on the grouping columnsrQ   r   )r   r5   rk   rl   Ústandard_normalÚarrayr3   ro   r7   rp   ÚDeprecationWarningr1   ru   Údtypesrt   )r<   r–   r~   Úappliedr   r   r   r   r   Ú"test_groupby_nonobject_dtype_mixed–   s    üÿÿrž   c            
      C   sz  t g d¢tt d¡dd�tddd�dœƒ} dd	„ }|  d
¡ ¡ dg }d}tjt	|d�� |  d
¡ 
|¡dg }W d   ƒ n1 sBw   Y  t ||¡ dd„ }d}tjt	|d�� |  d
¡ 
|¡dg }W d   ƒ n1 spw   Y  | ¡ }tj|jd< t ||¡ dd„ }d}tjt	|d�� |  d
¡ 
|¡dg }W d   ƒ n1 s¨w   Y  | ¡ }tj|jd< t ||¡ dd„ }d}tjt	|d�� |  d
¡ 
|¡dg }W d   ƒ n1 sàw   Y  |  d
¡ ¡ dg }tj|jd< t ||¡ dd„ }	d}tjt	|d�� |  d
¡ 
|	¡}W d   ƒ n	1 �sw   Y  |  d
¡ ¡ d  ¡ }tj|jd< d |_t ||¡ d S )N)ÚTigerrŸ   rŸ   ÚLambr    ÚPonyr¡   rY   rC   rŽ   Ú20130101r   r*   c                 S   s
   | j d S ©Nr   )r0   ©Úgrpr   r   r   Úf_0¸   s   
z*test_inconsistent_return_type.<locals>.f_0r   r   r˜   rQ   c                 S   ó   | j dkrd S | jd S )NrŸ   r   ©rd   r0   r¤   r   r   r   Úf_1Á   ó   

z*test_inconsistent_return_type.<locals>.f_1rŸ   c                 S   r§   ©Nr¡   r   r¨   r¤   r   r   r   Úf_2Í   rª   z*test_inconsistent_return_type.<locals>.f_2r¡   c                 S   r§   r«   r¨   r¤   r   r   r   Úf_3Ú   rª   z*test_inconsistent_return_type.<locals>.f_3r&   c                 S   s   | j dkrd S | jd jd S )Nr¡   r   r&   )rd   r0   r’   r¤   r   r   r   Úf_4ç   s   
z*test_inconsistent_return_type.<locals>.f_4)r   r   r5   r6   r   r1   Úfirstr7   rp   r›   ru   r8   r.   Únanr’   r+   r/   rd   rt   )
r<   r¦   r   r~   r   r©   Úer¬   r­   r®   r   r   r   Útest_inconsistent_return_type­   s\   
ýÿÿÿÿÿÿr²   c              	   C   sÖ  ddd„}dd„ }|   dd„ ¡}|jtjddd�}|jtjddd�}|jtjddd�}| d	¡}| |¡}	t ||¡ t ||¡ t ||	¡ |j|dd
�}|j|dd
�}|j|dd
�}t ||¡ t ||¡ t ||	¡ dD ]ø}
|j dd„ |
d�}|
rd nt	}d}tj
||d�� |jtjddd�}W d   ƒ n1 sžw   Y  tj
||d�� | tjd	¡}W d   ƒ n1 s¼w   Y  tj
||d�� | d	¡}W d   ƒ n1 sØw   Y  tj||dd� t ||¡ | tjdd	g¡}tj
||d�� | dd	g¡}W d   ƒ n	1 �sw   Y  tj||dd� tj
||d�� |j|dd
�}W d   ƒ n	1 �s5w   Y  tj
||d�� |jtjd	d
�}W d   ƒ n	1 �sUw   Y  t ||¡ tj||dd� qpd S )Nr   c                 S   s   t j| ||d�S )N©Úaxis©r5   Ú
percentile)rL   Úqr´   r   r   r   Úfö   ó   z test_pass_args_kwargs.<locals>.fc                 S   s   t j| ddd�S )NéP   r   r³   rµ   rK   r   r   r   rM   ù   ó    z'test_pass_args_kwargs.<locals>.<lambda>c                 S   ó   | j S rU   ©ÚmonthrK   r   r   r   rM   ü   ó    rº   r³   çš™™™™™é?©r·   )TFc                 S   r¼   rU   r½   rK   r   r   r   rM     r¿   ©Úas_indexú*A grouping .* was excluded from the resultrQ   F©Úcheck_namesgš™™™™™Ù?r£   )r1   rs   r5   r¶   ru   rv   Úquantiler7   rt   rq   rp   r   r8   )ÚtsÚtsframer¸   ÚgÚ
ts_groupedÚ
agg_resultÚapply_resultÚtrans_resultÚagg_expectedÚtrans_expectedrÃ   Ú
df_groupedÚwarnr~   r   Úexpected_seqr   r   r   Útest_pass_args_kwargsõ   s\   


ÿÿÿÿÿÿérÔ   rÃ   TFc                 C   sÆ   g d¢| _ | jdd„ |d�}|rd nt}d}tj||d�� |jtjddd	�}W d   ƒ n1 s1w   Y  | | jj	d
k  
d¡| | jj	dk  
d¡dœ}t|ƒj}|s[ttdƒƒ|_t ||¡ d S )N)r   r   r   r&   c                 S   r¼   rU   r½   rK   r   r   r   rM   .  r¿   z9test_pass_args_kwargs_duplicate_columns.<locals>.<lambda>rÂ   rÄ   rQ   rº   r   r³   rS   rÀ   r"   ©rS   r"   )Úcolumnsr1   rq   r7   rp   rs   r5   r¶   r)   r¾   rÇ   r   ÚTr
   r3   r8   )rÉ   rÃ   r=   rÒ   r~   ÚresÚex_datar   r   r   r   Ú'test_pass_args_kwargs_duplicate_columns*  s   
ÿþ
rÚ   c                  C   s    t tj d¡ d¡ttdƒtd�tdddd�d	�} |  	d
d„ dd„ dd„ g¡}t
|ƒt
| ƒks1J ‚|  	dd„ dd„ g¡}t
dd„ | jD ƒƒ}t
|ƒ|ksNJ ‚d S )Nr"   ©r`   é   ÚABCDrŽ   ú
2000-01-01r`   r   ©r    Úfreq©rÖ   r)   c                 S   r¼   rU   ©ÚyearrK   r   r   r   rM   G  r¿   ztest_len.<locals>.<lambda>c                 S   r¼   rU   r½   rK   r   r   r   rM   G  r¿   c                 S   r¼   rU   ©ÚdayrK   r   r   r   rM   G  r¿   c                 S   r¼   rU   râ   rK   r   r   r   rM   J  r¿   c                 S   r¼   rU   r½   rK   r   r   r   rM   J  r¿   c                 S   s   h | ]}|j |jf’qS r   )rã   r¾   ©Ú.0rL   r   r   r   Ú	<setcomp>K  s    ztest_len.<locals>.<setcomp>)r   r5   rk   rl   r™   r
   r2   Úobjectr   r1   ro   r)   )r<   r{   r   r   r   r   Útest_lenA  s   ýrê   c                  C   sd   t tjgd g d¢dœƒ} t|  d¡ƒdksJ ‚t|  d¡ƒdks#J ‚t|  ddg¡ƒdks0J ‚d S )NrH   ©rS   r"   rH   ©ÚaÚbrí   r   rî   )r   r5   r°   ro   r1   ©r<   r   r   r   Útest_len_nan_groupO  s   rð   c                  C   sT   t dd„ ttddƒƒd D ƒƒ} tj d¡ d¡d }t |ƒ}|  |¡}| ¡  d S )Nc                 S   s   g | ]}d | ‘qS )ç      ð?r   ræ   r   r   r   Ú
<listcomp>Y  ó    z)test_basic_regression.<locals>.<listcomp>rS   r`   r"   iL  g      $@)r   r2   r3   r5   rk   rl   r1   re   )r   rz   Ú	groupingsr{   r   r   r   Útest_basic_regressionW  s
    
rõ   )rE   rF   rC   rD   Úint16r†   c                 C   s¸   t t d¡ƒ}tt d¡|| d�}ttjdddtjtjddtjdg
|d�}| |¡}| t¡}tddgddgd�}t	j
||dd	� d
d„ }| |¡}tddgddgd�}t	 
||¡ d S )Nr`   rŽ   rŠ   r‹   r(   rÜ   r"   F©Úcheck_dtypec                 S   s   t t| ƒƒS rU   )Úfloatro   rK   r   r   r   r¸   w  s   ztest_with_na_groups.<locals>.fç      @ç       @)r
   r5   r6   r   Úonesr°   r1   rs   ro   r7   rt   )rB   r)   ÚvaluesÚlabelsr{   r   r   r¸   r   r   r   Útest_with_na_groupsb  s   þ


rÿ   c            	   	   C   s&  dd„ } dd„ }dd„ }t g d¢tdƒtd	d
ƒdœƒ}t g d¢tdƒtd	d
ƒdœƒ}d}d}tjt|d�� | d¡ | ¡}W d   ƒ n1 sHw   Y  tjt|d�� | d¡ | ¡}W d   ƒ n1 sgw   Y  t ||¡ d}tj	t
|d�� | d¡ |¡ W d   ƒ n1 sŽw   Y  tj	t
|d�� | d¡ |¡ W d   ƒ n1 s­w   Y  tj	t
|d�� | d¡ |¡ W d   ƒ n1 sÌw   Y  tj	t
|d��0 tjt|d�� | d¡ |¡ W d   ƒ n1 sów   Y  W d   ƒ d S W d   ƒ d S 1 �sw   Y  d S )Nc                 S   s^   | | j d dk d }|jr&tg gd g gd ddgd�}tdg|d�}|S | ddg¡}|S )Nr"   rS   rî   Úc©Úlevelsr„   Únamesrí   rá   )rî   Úemptyr   r   Ú	set_index©rL   ÚyÚ
multiindexrØ   r   r   r   Úf1ƒ  s   z,test_indices_concatenation_order.<locals>.f1c                 S   s4   | | j d dk d }|jrtƒ S | ddg¡}|S )Nr"   rS   rî   r   )rî   r  r   r  )rL   r  r   r   r   Úf2�  s
   z,test_indices_concatenation_order.<locals>.f2c                 S   sR   | | j d dk d }|jr'tg gd g gd ddgd�}tddg|d�}|S |S )	Nr"   rS   rŠ   r‹   r  rí   rî   rá   )rî   r  r   r   r  r   r   r   Úf3•  s   ÿz,test_indices_concatenation_order.<locals>.f3)rS   r"   r"   r"   rÜ   r!   rG   ©rí   rî   r   )rH   r"   r"   r"   zDThe behavior of array concatenation with empty entries is deprecatedr˜   rQ   rí   z@Cannot concat indices that do not have the same number of levels)r   r3   r7   rp   r›   r1   ru   r8   rw   rx   ÚAssertionErrorrq   )	r	  r
  r  r<   Údf2Údepr_msgr~   Úresult1Úresult2r   r   r   Ú test_indices_concatenation_order€  s>   
ÿÿÿÿÿÿÿ$ÿr  c                 C   s¾   |   dd„ ¡}| ¡ }| dd„ ¡}t ||¡ | ¡ }dd„ |D ƒ}t|ƒj}t ||¡ |j	}| dd„ ¡}t ||¡ d}t
jt|d�� t|d	ƒ W d   ƒ d S 1 sXw   Y  d S )
Nc                 S   ó   |   ¡ S rU   ©ÚweekdayrK   r   r   r   rM   ¾  rN   z#test_attr_wrapper.<locals>.<lambda>c                 S   s   t j| dd�S )NrS   )Úddof)r5   r4   rK   r   r   r   rM   Á  ó    c                 S   s   i | ]	\}}||  ¡ “qS r   )Údescribe)rç   rd   Úgpr   r   r   Ú
<dictcomp>Æ  ó    z%test_attr_wrapper.<locals>.<dictcomp>c                 S   r¼   rU   rŽ   rK   r   r   r   rM   Ì  r¿   z-'SeriesGroupBy' object has no attribute 'foo'rQ   rŠ   )r1   r4   rs   r7   rt   r  r   r×   r8   rB   rw   rx   ÚAttributeErrorÚgetattr)rÈ   r{   r   r   r~   r   r   r   Útest_attr_wrapper½  s   
"ÿr  c                 C   sf  |   dd„ ¡}| d¡}t|ƒdksJ ‚t|jƒdksJ ‚|  ¡ }dd„ |jD ƒ|d< |  d¡ d¡}tj||d	d
� |  d¡  dd„ ¡}| 	dd„ ¡}t|ƒdksTJ ‚t|jƒdks]J ‚| 	dd„ ¡}|D ]\}}| 
¡ }|jD ]}	tj| |	¡|d	d
� qqqf|D ]\}
}|jd  ¡ |
ks‘J ‚q‚|j}|j}| ¡ D ]\}}| j || ¡}||k ¡ s°J ‚qœd S )Nc                 S   r  rU   r  rK   r   r   r   rM   Ö  rN   z$test_frame_groupby.<locals>.<lambda>re   r!   rÜ   c                 S   s   g | ]}|  ¡ ‘qS r   r  ræ   r   r   r   rò   ß  ró   z&test_frame_groupby.<locals>.<listcomp>r  FrÅ   rb   c                 S   r  rU   r  rK   r   r   r   rM   ä  rN   c                 S   ó   | |   ¡  S rU   ©re   rK   r   r   r   rM   å  rX   c                 S   r  rU   r   rK   r   r   r   rM   ê  rN   r   )r1   rr   ro   rÖ   r.   r)   r7   r8   Úheadrv   re   rt   Úxsr  ÚgroupsÚindicesÚitemsÚtakeÚall)rÉ   r{   Ú
aggregatedÚtscopyÚstraggedr€   rd   r•   re   Úidxr  r#  r$  r|   r}   Ú	samethingr   r   r   Útest_frame_groupbyÕ  s4   

ÿþr-  c           	      C   s  dddddœ}d}t jt|d�� | j|dd�}W d   ƒ n1 s"w   Y  | d¡}t|ƒt| ƒks6J ‚t|jƒdks?J ‚d	d
„ }d}t jt|d�� | jj|dd�}W d   ƒ n1 s_w   Y  t  | 	|¡j| 	|¡¡ |D ]\}}t|jƒdks€J ‚qsd S )Nr   rS   r�   ú+DataFrame.groupby with axis=1 is deprecatedrQ   r³   re   r"   c                 S   r  rU   r   rK   r   r   r   rM   	  rX   z,test_frame_groupby_columns.<locals>.<lambda>ú5The 'axis' keyword in DataFrame.groupby is deprecated)
r7   rp   rq   r1   rr   ro   rÖ   r×   r8   rv   )	rÉ   Úmappingr~   r{   r(  ÚtfÚgroupedTr|   r}   r   r   r   Útest_frame_groupby_columnsý  s"   ÿ
ÿÿr3  c                 C   s6  |   d¡}|jdd�}|jjdksJ ‚| j ddd�jdd�}|jjdks&J ‚|ddg  d¡}|jjdks7J ‚| dd	d
œ¡}|jjdksGJ ‚|d  ¡ }|jjdksUJ ‚|d  d¡}|jjdksdJ ‚|d  dd	g¡}|jjdksuJ ‚d}tjt|d�� |d  dd	dœ¡ W d   ƒ d S 1 s”w   Y  d S )Nr   T©Únumeric_onlyFrÂ   r&   r�   re   r4   ©r&   r�   r]   rQ   ©rŠ   r‹   )r1   re   r)   rd   rs   rw   rx   r   )r<   r{   r   r~   r   r   r   Útest_frame_set_name_single  s&   
"ÿr8  c                 C   sÚ   | d }| d }|   |j|jg¡}|jdd�}|   ddg¡ ¡ }tj|jd d …ddgf |jd d …ddgf dd� ttj 	d	¡ 
d
¡tj 	d	¡ 
d
¡t g d¢¡t g d¢¡dœg d¢d�} |   ddg¡}| d¡ d S )Nr   r   Tr4  r&   r�   FrÅ   r"   é   ©rî   rî   rî   rí   rí   rí   ©Ú1r<  r<  Ú2r=  r=  )Úv1Úv2Úk1Úk2)r^   r_   rŒ   ÚfourÚfiveÚsixr(   r@  rA  rW   )r1   Úgetre   r7   r8   r’   r   r5   rk   rl   r™   rš   rs   )r<   Úcol1Úcol2r{   r   r   r   r   r   Útest_multi_func/  s$   *ÿüù
rH  c                 C   sJ   |   ddg¡d }| ddg¡}t| d¡| d¡dœƒ}t ||¡ d S )Nr   r   r&   re   r4   )re   r4   )r1   rs   r   r7   r8   )r<   r{   r   r   r   r   r   Ú!test_multi_key_multiple_functionsK  s   rI  c                  C   sÎ   t g d¢g d¢tj d¡ d¡tj d¡ d¡tj d¡ d¡dœƒ} |  ddg¡}dd	g}| |¡}tj|d
  |¡|d  |¡|d  |¡gg d¢dd�}t	|j
tƒsWJ ‚t	|j
tƒs_J ‚t ||¡ d S )N©rŠ   rŠ   rŠ   rŠ   r‹   r‹   r‹   r‹   rŠ   rŠ   rŠ   ©r^   r^   r^   r_   r^   r^   r^   r_   r_   r_   r^   r"   é   )r   r   r�   ÚEÚFr   r   re   r4   r�   rM  rN  )r�   rM  rN  rS   )Úkeysr´   )r   r5   rk   rl   r™   r1   rs   r+   ÚconcatÚ
isinstancer)   r   r7   r8   )rz   r{   Úfuncsr   r   r   r   r   Ú"test_frame_multi_key_function_listS  s&   ãÿ"
&ýrS  c               	   C   sª   t g d¢g d¢g d¢tj d¡ d¡tj d¡ d¡tj d¡ d¡dœƒ} |  ddg¡}d	d
g}t d¡}tj	t
|d�� | |¡ W d   ƒ d S 1 sNw   Y  d S )NrJ  rK  )ÚdullrT  ÚshinyrT  rT  rU  rU  rT  rU  rU  rU  r"   rL  )r   r   r&   r�   rM  rN  r   r   re   r4   ú&agg function failed [how->mean,dtype->rQ   )r   r5   rk   rl   r™   r1   ÚreÚescaperw   rx   Ú	TypeErrorrs   )rz   r{   rR  r~   r   r   r   Ú2test_frame_multi_key_function_list_partial_failureƒ  s   Öÿ/
"ÿrZ  Úopc                 C   r  rU   rV   rK   r   r   r   rM   º  rN   rM   c                 C   r  rU   r   rK   r   r   r   rM   º  rN   c              	   C   s"  | }|  ddg¡}||ƒ}g }g }|  d¡D ]%\}}|  d¡D ]\}	}
| ||	f¡ | ||
jd d …ddgf ƒ¡ qqtj|ddgd�}tj|dd�j}||_dD ]}||| ƒ}|| }|| }t	 
||¡ t	 
||¡ qR|d   |d |d g¡ ¡ }|  ddg¡ ¡ d }t	 
||¡ d S )	Nr   r   r&   r�   ©r  rS   r³   r6  )r1   Úappendr’   r   Úfrom_tuplesr+   rP  r×   r)   r7   rt   re   )r<   r[  rz   r{   r  rO  rý   Ún1Úgp1Ún2Úgp2Úmir   ÚcolÚ
result_colÚpivotedÚexpr   r   r   r   Útest_groupby_multiple_columnsº  s,   "þrh  c                  C   s    t ddgddgddggddgd�} | jdd	d
�d  d¡}tddgdd�}t ||¡ | jdd	dd�d  dd„ ¡}tg d¢dt g d¢¡d�}t ||¡ d S )NrS   r"   rÜ   r!   r9  r   r   ©rÖ   FrÂ   ©rd   T)rÃ   rP   c                 S   r  rU   )ÚcumsumrK   r   r   r   rM   ã  rN   z-test_as_index_select_column.<locals>.<lambda>)r"   r9  r9  ))r   r   )r   rS   rÕ   ©rd   r)   )	r   r1   Ú	get_groupr   r7   rt   ru   r   r^  ©r<   r   r   r   r   r   Útest_as_index_select_columnÛ  s   "ÿÿro  c                  C   s†   d} t g d¢g d¢dœƒ}|j| d¡j d¡ }tjt| d�� | d¡jd|d�}t 	||¡ W d   ƒ d S 1 s<w   Y  d S )	Nzobj is deprecated©rS   rS   r"   ©rH   rÜ   r!   rì   rî   rÜ   rQ   )Úobj)
r   r0   r1   r$  rE  r7   rp   rq   rm  r8   )r  r<   r   r   r   r   r   Ú!test_obj_arg_get_group_deprecatedë  s   "þrs  c                  C   sd   t tg d¢dd�d�} | jddd�d jdd	�}t | jd d
… tdƒd�}d g|j_t ||¡ d S )Nr*   Úalpharj  ri  r   F)ÚbyrÃ   r   r4  r"   r   rá   )	r   r
   r1   rW   rÖ   r3   r  r7   r8   )r<   Úleftr   r   r   r   Ú0test_groupby_as_index_select_column_sum_empty_dfõ  s
   
rw  c                 C   sÒ  | j ddd�}|ddg  d¡}|jdd�}t ||¡ | dd	d
œ¡}|jdd�}| ¡ d |d< t ||¡ | j ddd�}d}tjt|d�� |d  dd	i¡ W d   ƒ n1 s\w   Y  | j ddgdd�}| d¡}| ¡ }t ||¡ | dd	d
œ¡}| ¡ }| ¡ d |d< t ||¡ |d  ¡ }t	|ƒj
ddid�}d}tjt|d�� |d  dd	i¡}W d   ƒ n1 sÀw   Y  t ||¡ t	tj d¡ ddd¡g d¢d�} ttj d¡ ddd¡dd�}	|   |	¡}
|
 d¡ d}tjt|dd�� |
 t¡}W d   ƒ n	1 �sw   Y  tjt|dd�� |   |	¡ t¡}W d   ƒ n	1 �s1w   Y  t ||¡ dD ](}| j |	dd�}
t|
|ƒƒ }| j |	jdd�}
t|
|ƒƒ jdd�}t ||¡ �q>d S )Nr   FrÂ   r&   r�   re   Tr4  rW   r6  r]   rQ   ÚQr   ri  z7Passing a dictionary to SeriesGroupBy.agg is deprecatedr"   r   éd   )é2   rH   )ÚjimÚjoeÚjolier!   r`   rz  r{  rj  z:The behavior of DataFrame.sum with axis=None is deprecated)rR   Úcheck_stacklevel)re   ÚmaxÚcountr“   rk  r'  ©Údrop)r1   rs   re   r7   r8   rW   rw   rx   r   r   Úrenamerp   rq   r5   rk   rl   Úintegersr   Únthru   r  rý   Úreset_index)r<   r{   r   r   r  Ú	expected2r~   Ú	expected3Úresult3rÈ   ÚgrrØ   ÚaltÚattrrv  Úrightr   r   r   Útest_groupby_as_index_agg   sd   ÿ
ÿþ

ÿÿùrŽ  c                 C   sþ   | dv rt  d| › �¡ ttj d¡jdddd�dd	gd
�}t| d¡| ƒƒ }| dkr0| 	d¡}| 
¡ }| dkrD|d  |d j¡|d< |jddd�}t|| ƒƒ }t ||¡ | | ¡}t ||¡ t|d	 | ƒƒ }t ||¡ |d	  | ¡}t ||¡ d S )N)Úcorrwithr…  Úngroupz!GH 5755: Test not applicable for r"   r   r!   )ry  r"   )Úsizerí   rî   ri  r‘  FrÂ   )rw   Úskipr   r5   rk   rl   r„  r  r1   rƒ  r†  r…   rB   r7   r8   rs   )Úreduction_funcr<   r   rÊ   r   r   r   r   Útest_ops_not_as_indexC  s(   ÿ

r”  c                 C   s,  | j ddd�}| j ddgdd�}|d  d¡}| d¡jd d …ddgf }t|tƒs,J ‚t ||¡ |d  d¡}| d¡jd d …g d¢f }t|tƒsNJ ‚t ||¡ |d  ¡ }| ¡ jd d …ddgf }t|tƒsnJ ‚t ||¡ |d  ¡ }| ¡ jd d …g d¢f }t|tƒsŽJ ‚t ||¡ d S )Nr   FrÂ   r   r&   rW   r*   )r1   rs   r’   rQ  r   r7   r8   rW   )r<   r{   Úgrouped2r   r   r  r‡  r   r   r   Ú!test_as_index_series_return_framee  s$   r–  c                 C   sT   | j ddd�}d}tjt|d�� |d  d¡ W d   ƒ d S 1 s#w   Y  d S )Nr   FrÂ   zColumn\(s\) C already selectedrQ   r&   r�   )r1   rw   rx   Ú
IndexErrorÚ__getitem__)r<   r{   r~   r   r   r   Ú(test_as_index_series_column_slice_raises~  s
   "ÿr™  c                 C   sÚ   | }|j ddd�}|jdd�}|  dg¡jdd�}| dd|j¡ tt|ƒƒ|_t ||¡ |j ddgdd�}| ¡ }|  ddg¡ ¡ }tt	|jj
Ž ƒ}| dd|d ¡ | dd|d ¡ tt|ƒƒ|_t ||¡ d S )	Nr   FrÂ   Tr4  r   r   rS   )r1   re   Úinsertr)   r   ro   r7   r8   r2   Úziprý   )r<   rz   r{   r   r   Úarraysr   r   r   Útest_groupby_as_index_cython‡  s   r�  c                 C   sL   | j ddgdd�}|d  t¡}| t¡jd d …g d¢f }t ||¡ d S )Nr   r   FrÂ   r&   r*   )r1   rs   ro   r’   r7   r8   ©r<   r{   r   r   r   r   r   Ú#test_groupby_as_index_series_scalarž  s   rŸ  c              	   C   sÒ   d}t jt|d�� |jdd„ dd� W d   ƒ n1 sw   Y  d}d}t jt|d��2 tjt|d�� | jd	d„ dd
d� W d   ƒ n1 sJw   Y  W d   ƒ d S W d   ƒ d S 1 sbw   Y  d S )Nz(as_index=False only valid with DataFramerQ   c                 S   r  rU   r  rK   r   r   r   rM   «  rN   z.test_groupby_as_index_corner.<locals>.<lambda>FrÂ   z$as_index=False only valid for axis=0r.  c                 S   r  rU   )ÚlowerrK   r   r   r   rM   ±  rN   rS   )rÃ   r´   )rw   rx   rY  r1   Ú
ValueErrorr7   rp   rq   )r<   rÈ   r~   r  r   r   r   Útest_groupby_as_index_corner¨  s   ÿÿÿ"ÿr¢  c                  C   s  t tj d¡ d¡ttdƒtd�tdddd�d	�} |  	d
d„ dd„ dd„ g¡}| 
¡ }t | j|j¡ d}tjt|d�� | jj	dd„ dd„ dd„ gdd�}W d   ƒ n1 sXw   Y  | dd„ ¡}t |j| j¡ t | jj|j¡ | dd„ ¡}t | jj|j¡ d S )Nr"   rÛ   rÝ   rŽ   rÞ   r`   r   rß   rá   c                 S   r¼   rU   râ   rK   r   r   r   rM   º  r¿   z+test_groupby_multiple_key.<locals>.<lambda>c                 S   r¼   rU   r½   rK   r   r   r   rM   º  r¿   c                 S   r¼   rU   rä   rK   r   r   r   rM   º  r¿   r.  rQ   c                 S   r¼   rU   râ   rK   r   r   r   rM   Á  r¿   c                 S   r¼   rU   r½   rK   r   r   r   rM   Á  r¿   c                 S   r¼   rU   rä   rK   r   r   r   rM   Á  r¿   rS   r³   c                 S   r  rU   rV   rK   r   r   r   rM   Ä  rN   c                 S   r  rU   rV   rK   r   r   r   rM   È  rN   )r   r5   rk   rl   r™   r
   r2   ré   r   r1   rW   r7   Úassert_almost_equalrý   rp   rq   r×   rs   Úassert_index_equalr)   rÖ   )r<   r{   r   r  r   r   r   Útest_groupby_multiple_key´  s&   ýÿÿr¥  c                 C   sP   |   ¡ } tj| d< |  ddg¡ ¡ }|  ddg¡ ¡ }tj|d< t ||¡ d S )NÚbadr   r   )r.   r5   r°   r1   re   r7   r8   )r<   r   r   r   r   r   Útest_groupby_multi_cornerÌ  s   

r§  c                 C   s°  |   d¡}t d¡}tjt|d�� | d¡ W d   ƒ n1 s!w   Y  tjt|d�� | ¡  W d   ƒ n1 s<w   Y  | jd d …g d¢f } t	 
¡ | d< |   d¡}d}tjt|d�� | d¡ W d   ƒ n1 spw   Y  tjt|d�� | ¡  W d   ƒ n1 s‹w   Y  d	}tjt|d�� | j d
d
dddœdd�}W d   ƒ n1 s°w   Y  d}tjt|d�� | dd„ ¡ W d   ƒ d S 1 sÑw   Y  d S )Nr   rV  rQ   re   ©r   r&   r�   rM  z/datetime64 type does not support sum operationsrW   r.  r   rS   )r   r&   r�   rM  r³   z does not support reduction 'sum'c                 S   s   | j ddd�S )Nr   Fr4  rV   rK   r   r   r   rM   ï  r  z)test_raises_on_nuisance.<locals>.<lambda>)r1   rW  rX  rw   rx   rY  rs   re   r’   r   ÚnowrW   r7   rp   rq   )r<   r{   r~   r  r   r   r   Útest_raises_on_nuisanceØ  s4   

ÿ
ÿ
ÿ
ÿÿ"ÿrª  Úagg_functionr  Úminc                 C   sv   |   d¡}t||ƒƒ }| ¡ }t| j| d dkdf |ƒƒ |jd< t| j| d dkdf |ƒƒ |jd< t ||¡ d S )Nr   r‹   r   )r‹   r   rŠ   )rŠ   r   )r1   r  r.   r’   r7   r8   )r<   r«  r{   r   r   r   r   r   Útest_keep_nuisance_aggò  s   
$$r­  )rW   re   Úprodr4   ÚvarÚsemÚmedianr5  c           
      C   sè   |   d¡}d}||v rC|sC|dv rt}d}nt}t d|› d�¡}tj||d�� t||ƒ|d� W d   ƒ d S 1 s<w   Y  d S t||ƒ|d�}|sV|d	krVg d
¢}ng d¢}t| jd d …|f   d¡|ƒ|d�}	t	 
||	¡ d S )Nr   )r¯  r4   r°  re   r®  r±  )r4   r°  z(could not convert string to float: 'one'zagg function failed [how->z,dtype->rQ   r4  rW   r�   r¨  )r1   r¡  rY  rW  rX  rw   rx   r  r’   r7   r8   )
r<   r«  r5  r{   Úno_drop_nuisanceÚklassr~   r   rÖ   r   r   r   r   Útest_omit_nuisance_agg   s&   
"ÿ
ÿr´  c                 C   sF   |   d¡}tjtdd�� | ¡  W d   ƒ d S 1 sw   Y  d S )Nr   zcould not convertrQ   )r1   rw   rx   r¡  Úskew)r<   r{   r   r   r   Ú$test_raise_on_nuisance_python_single"  s   

"ÿr¶  c                 C   sŒ   |   ddg¡}t d¡}tjt|d�� | d¡ W d   ƒ n1 s#w   Y  tjt|d�� | ¡  W d   ƒ d S 1 s?w   Y  d S )Nr   r   rV  rQ   re   )r1   rW  rX  rw   rx   rY  rs   re   )Úthree_groupr{   r~   r   r   r   Ú&test_raise_on_nuisance_python_multiple)  s   
ÿ
"ÿr¸  c                 C   sØ   t t g d¢¡t g d¢¡ddgd tj d¡ d¡tj d¡ d¡dœƒ}| d	d
g¡}|ddg  d¡}|jdd�}t	 
||¡ | dd… jdd�}| dd„ ¡}|d  d¡}t	 |d |¡ |jjdksjJ ‚d S )Nr:  r;  rŠ   r‹   rH   r"   r9  )r@  rA  Úk3r>  r?  r@  rA  r>  r?  re   Tr4  r!   r   ©r   c                 S   r  rU   r   rK   r   r   r   rM   D  rN   z*test_empty_groups_corner.<locals>.<lambda>r   r¯   )r   r5   rš   rk   rl   r™   r1   rs   re   r7   r8   ru   rt   r)   rd   )r‡   r<   r{   r   r   r   Úagged_Ar   r   r   Útest_empty_groups_corner2  s"   
ûÿ
r¼  c                  C   sP   t dgƒ} d}tjt|d�� |  dd„ ¡ W d   ƒ d S 1 s!w   Y  d S )Nr   z5unsupported operand type\(s\) for \+: 'int' and 'str'rQ   c                 S   s   | d S )NrŠ   r   rK   r   r   r   rM   N  rN   z$test_nonsense_func.<locals>.<lambda>)r   rw   rx   rY  r1   )r<   r~   r   r   r   Útest_nonsense_funcJ  s
   
"ÿr½  c                 C   sæ   | j }d|d< t g d¢¡t g d¢¡g}t d¡}tjt|d�� | |¡ 	d¡ W d   ƒ n1 s4w   Y  |j
dd� |¡ 	d¡}t|jtƒsMJ ‚dd	„ }tjtd
d�� | |¡ |¡ W d   ƒ d S 1 slw   Y  d S )NÚpeekaboo)Úbazr_   ©r   r   rS   rV  rQ   re   ri  c                 S   s   | j dkr	tdƒ‚|  ¡ S )N)rŠ   r^   úTest error message)rd   rY  rW   )r;   r   r   r   Úaggfun\  s   
z5test_wrap_aggregated_output_multindex.<locals>.aggfunrÁ  )r×   r5   rš   rW  rX  rw   rx   rY  r1   rs   r‚  rQ  rÖ   r   rr   )r‡   r<   rO  r~   r   rÂ  r   r   r   Ú%test_wrap_aggregated_output_multindexQ  s   
ÿ"ÿrÃ  c                 C   sh   | j dd� ¡ }|jjdksJ ‚| j dd� ¡ }|jjdks J ‚| d j dd� ¡ }|jjdks2J ‚d S )Nr   rº  r¯   rS   Úsecondr   )r1   r€  r)   rd   )r‡   r   r   r   r   Útest_groupby_level_applye  s   rÅ  c                    sÒ   |   ¡ }dddddœ‰ ddddœ‰| jˆ dd� ¡ }| jˆdd� ¡ }tj‡ fdd„|d D ƒtjd	�}tj‡fd
d„|d D ƒtjd	�}|  |¡ ¡ }|  |¡ ¡ }d\|j_|j_t 	||¡ t 	||¡ d S )Nr   rS   )rŠ   r‹   r¿  Úqux)r^   r_   rŒ   rº  c                    ó   g | ]}ˆ   |¡‘qS r   ©rE  ræ   )Úmapper0r   r   rò   y  ó    z-test_groupby_level_mapper.<locals>.<listcomp>r¯   rŽ   c                    rÇ  r   rÈ  ræ   )Úmapper1r   r   rò   |  rÊ  rÄ  )r¯   rÄ  )
r†  r1   rW   r5   rš   rC   r)   rd   r7   r8   )r‡   Ú	deleveledÚresult0r  Úmapped_level0Úmapped_level1Ú	expected0Ú	expected1r   )rÉ  rË  r   Útest_groupby_level_mappero  s    ÿÿrÒ  c                  C   s(  t g d¢tg d¢dd�ƒ} t g d¢ttddƒdd�ƒ}| jdd	� ¡ }t ||¡ | jdgd	� ¡ }t ||¡ | jd
d	� ¡ }t ||¡ | jd
gd	� ¡ }t ||¡ d}tjt	|d�� | jdd	� W d   ƒ n1 sow   Y  tjt	|d�� | jdd	� W d   ƒ n1 sŒw   Y  d}tjt	|d�� | jg d	� W d   ƒ n1 s«w   Y  d}tjt	|d�� | jddgd	� W d   ƒ n1 sÌw   Y  tjt	|d�� | jddgd	� W d   ƒ n1 sëw   Y  d}tjt	|d�� | jdgd	� W d   ƒ d S 1 �sw   Y  d S )N)rS   r"   rH   r`   rÜ   r!   ra   r9  )rS   r"   rH   rS   rÜ   r!   r"   r9  rŠ   rj  )rL  é   rH   rÜ   r!   r9  rS   rY   r   rº  r'   z2level > 0 or level < -1 only valid with MultiIndexrQ   éþÿÿÿzNo group keys passed!z*multiple levels only valid with MultiIndex)
r   r
   r3   r1   rW   r7   rt   rw   rx   r¡  )Úsr   r   r~   r   r   r   Útest_groupby_level_nonmulti†  s@   ÿÿÿÿÿ$ÿrÖ  c                  C   sB   t t d¡d g d¢d�} t dƒ}| jdd� ¡ }t ||¡ d S )NrÜ   ù      ð?       @)r   r   rS   rS   ©rz   r)   )r×  y      @      $@r   rº  )r   r5   r6   r1   rW   r7   rt   )rí   r   r   r   r   r   Útest_groupby_complex¦  s   rÙ  c                  C   sf   t dddœdddœdddœgƒ} |  d¡ ¡ }t dgdggtddgdd	�td
gƒd�}t ||¡ d S )Nr"   r×  rì   rS   ù      ð?      ð?rî   rñ   ç      ø?rj  rí   ©r)   rÖ   )r   r1   re   r
   r7   r8   rn  r   r   r   Útest_groupby_complex_mean¯  s   ýÿ
ýrÝ  c                 C   s²   t dddœdddœdddœgƒ}| rdnt}t tjg d¢tjd�tg d	¢d
d�tdg|d�d�}|jd
dd� ¡ }t 	||¡ tg d¢d
d�|_
|jd
dd� ¡ }t 	||¡ d S )NrS   rÚ  rì   r×  rÜ   ústring[pyarrow_numpy])rS   rS   rS   rŽ   )rÚ  r×  ù      ð?        rî   rj  rí   rÜ  F©Úsort)rß  rÚ  r×  T)r   ré   r5   rš   rC   r
   r1   r€  r7   r8   r)   )Úusing_infer_stringr<   rB   r   r   r   r   r   Útest_groupby_complex_numbersÁ  s"   ýÿýrã  c                  C   sj   t g d¢tg d¢ƒd�} t g d¢tg d¢ƒd�}|  |¡}| ¡ }|  | | j¡j¡ ¡ }t ||¡ d S )N)ç      @g      "Àrú   g      Y@g      Àg     €K@gÍÌÌÌÌÌ@)rí   rî   r   Údr±   r¸   rÊ   r(   )rñ   rñ   rú   rä  rä  g      @)rí   rî   rå  r¸   rÊ   Úh)	r   r
   r1   re   rn   r)   rE  r7   rt   )Ús1Ús2r{   r   rg  r   r   r   Ú'test_groupby_series_indexed_differentlyÙ  s   
þÿ
ré  c            	      C   s¼  t tg d¢g d¢gŽ ƒ} t | ¡}t g d¢¡}ttj d¡ d¡||d�}|j	dd� 
¡ }t |j|¡ d	}tjt|d
�� |j	ddd�}W d   ƒ n1 sPw   Y  | 
¡ }t |j|j¡ |j	dd� d¡}t |j|¡ |j	dd� dd„ ¡}t |j|¡ tjt|d
�� |j	ddd�}W d   ƒ n1 sœw   Y  | dd„ ¡}t |jtddgƒ¡ t |j|j¡ | d¡\}}d|d< |j	dd�j
dd�}t |j|jd d… ¡ d S )N)r‹   r‹   r¿  r¿  rŠ   rŠ   rÆ  rÆ  )r^   r_   r^   r_   r^   r_   r^   r_   ))r   Úcat)r   Údog)r   rê  )r   rë  r"   )r�   rÜ   rÜ  r   rº  r.  rQ   rS   )r   r´   re   c                 S   r  rU   r   rK   r   r   r   rM     rN   z0test_groupby_with_hier_columns.<locals>.<lambda>c                 S   s
   |   d¡S )NrS   r   rK   r   r   r   rM   
  ó   
 r   r   r‹   )r   rŠ   Tr4  r'   )r2   r›  r   r^  r   r5   rk   rl   r™   r1   re   r7   r¤  rÖ   rp   rq   r)   rs   ru   r
   Ú	sortlevel)	Útuplesr)   rÖ   r<   r   r  r=   Úsorted_columnsÚ_r   r   r   Útest_groupby_with_hier_columnsè  sH   þÿÿ
ÿÿÿÿrñ  c                 C   s@   |   | d j¡}| ¡ }|   | d  d ¡¡ ¡ }t ||¡ d S )Nr   )r1   rý   rW   rƒ  r7   r8   rž  r   r   r   Útest_grouping_ndarray  s   rò  c                  C   sl   t g d¢dd�} tg d¢g d¢g d¢g d¢g d¢d	œ| d
�}| g d¢¡}| d¡}| ¡ }t ||¡ d S )N©r   rS   r"   rH   rÜ   r)   rj  )Úfoo1rô  Úfoo2rô  Úfoo3)Úbar1Úbar2rø  r÷  r÷  )Úbaz1rù  rù  Úbaz2rú  )Úspam2Úspam3rû  Úspam1rý  )ra   rb   é(   rz  é<   )rŠ   r‹   r¿  Úspamrz   r(   )rŠ   r‹   r¿  r   re   )r
   r   r1   rs   re   r7   r8   )r)   rz   r{   r   r   r   r   r   Útest_groupby_wrong_multi_labels  s   ûø
r  c                 C   s°   |   | d ¡jdd�}| j | d dd�jdd�}|jjdks J ‚d|v s&J ‚|   | d | d g¡ ¡ }| j | d | d gdd� ¡ }|jjdksJJ ‚d|v sPJ ‚d|v sVJ ‚d S )Nr   Tr4  FrÂ   r   ©r   r   )r1   re   r)   rd   r  )r<   r   r  r   r   r   Útest_groupby_series_with_name0  s   r  c                 C   sR   |   d¡d }| ¡ jdksJ ‚| ¡ jdksJ ‚dd„ }| |¡jdks'J ‚d S )Nr   r&   c                 S   s   t  | ¡d S rj   )r5   rW   rK   r   r   r   rM   C  r  z.test_seriesgroupby_name_attr.<locals>.<lambda>)r1   r€  rd   re   rs   )r<   r   ÚtestFuncr   r   r   Útest_seriesgroupby_name_attr=  s
   r  c                  C   sf   t g d¢g d¢tj d¡ d¡d t d¡dœƒ} |  dg¡j ¡ }| j | j	¡ ¡ }t
 ||¡ d S )Nr‰   )r^   r^   r_   r_   r_   r_   r^   r_   r"   r�   rñ   r�   r   )r   r5   rk   rl   r™   r6   r1   r   r€  r   r7   rt   ©r<   r   r   r   r   r   Útest_consistency_nameG  s   üÿ	r  c                 C   s  d	dd„}dd„ }d}t jt|d�� |  d¡ |¡}W d   ƒ n1 s%w   Y  |jjd u s2J ‚t jt|d�� |  d¡ |d¡}W d   ƒ n1 sMw   Y  |jjdksZJ ‚t jt|d�� |  d¡ |¡}W d   ƒ n1 stw   Y  |jjd u s�J ‚d S )
Nc                 S   s   t ddddœ|d�S )NrS   r"   rH   ©r€  re   Ú	omissionsrj  )r   )r<   rd   r   r   r   Ú	summarizeZ  s   z0test_groupby_name_propagation.<locals>.summarizec                 S   s   t ddddœ| jd d d�S )NrS   r"   rH   r  r   r   rj  )r   r0   rï   r   r   r   Úsummarize_random_name]  s   z<test_groupby_name_propagation.<locals>.summarize_random_namer˜   rQ   r   ÚmetricsrU   )r7   rp   r›   r1   ru   rÖ   rd   )r<   r
  r  r~   r  r   r   r   Útest_groupby_name_propagationX  s   
ÿÿÿr  c                  C   sJ   t dd„ tdƒD ƒƒ} |  d¡}| ¡ }|  | d ¡ ¡ }t ||¡ d S )Nc                 S   s   g | ]}t  d ¡‘qS )r`   )r5   r6   ræ   r   r   r   rò   p  rÊ  z2test_groupby_nonstring_columns.<locals>.<listcomp>r`   r   )r   r3   r1   re   r7   r8   rž  r   r   r   Útest_groupby_nonstring_columnso  s
   
r  c                  C   sp   t g d¢gg d¢d�} t ddggddgtdgdd	�d
�}|  d¡ ¡ }t ||¡ |  d¡ ¡ }t ||¡ d S )Nrc   )r   r   r   ri  rS   r"   r   r   r   rj  rá   )r   r
   r1   r¯   r7   r8   rW   r  r   r   r   Útest_groupby_mixed_type_columnsw  s   "r  c                  C   s`   t  d¡} |  t j¡ t| d d …df ƒ}t  tdƒd¡}| |¡ tj	¡}| 
¡  ¡ s.J ‚d S )N)ry  ry  r   r`   )r5   r  Úfillr°   r   Útiler3   r1   rs   r±  Úisnar'  )Úarrrr  Úindsr   r   r   r   Ú(test_cython_grouper_series_bug_noncontigƒ  s   
r  c                  C   sh   t dgd ƒ} ttj d¡ d¡| d d d… d�}tj d¡ ddd¡}| |¡}dd	„ }| |¡ d S )
NÚ
aaaaaaaaaary  r"   rz  r(   r   r!   c                 S   s   t ttt| jƒƒƒS rU   )ro   ÚsetÚmapÚidr)   rK   r   r   r   rM   —  ró   z5test_series_grouper_noncontig_index.<locals>.<lambda>)	r
   r   r5   rk   rl   r™   r„  r1   rs   )r)   rý   rþ   r{   r¸   r   r   r   Ú#test_series_grouper_noncontig_index�  s   $
r  c                  C   s˜   t tdƒƒ} tjg d¢dd�}dd„ }dd„ }|  |¡}| |¡}|jtjks)J ‚t|j	d	 t
ƒs3J ‚| |¡}|jtjks@J ‚t|j	d	 t
ƒsJJ ‚d S )
Nr!   )rí   rî   r   rå  r±   rƒ   rŽ   c                 S   s   t t|  ¡ ƒƒS rU   )r   Ústrre   rK   r   r   r   Úconvert_fastŸ  r¹   z>test_convert_objects_leave_decimal_alone.<locals>.convert_fastc                 S   s$   t | jjƒdks
J ‚tt|  ¡ ƒƒS r£   )ro   rý   Úbaser   r  re   rK   r   r   r   Úconvert_force_pure¢  s   zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )r   r3   r5   rš   r1   rs   rB   Úobject_rQ  r0   r   )rÕ  rþ   r  r  r{   r   r   r   r   Ú(test_convert_objects_leave_decimal_alone›  s   


r   c                  C   st   t g tjddd�dœƒ} | d jtjksJ ‚|  d¡ ¡ }tg dtjd�}t dtg |dd�iƒ}t	j
||d	d
� d S )Nr   rC   rŽ   )rL   r3   rL   ©rd   rB   r3   rI   T)Ú	by_blocks)r   r5   r6   rB   rE   r1   r¯   r
   r   r7   r8   )r<   r   Ú	exp_indexr   r   r   r   Ú"test_groupby_dtype_inference_empty²  s   r$  c                  C   sb   t dgdgdgdœƒ} |  ddg¡d  ¡ }tdgtjdgdggddgd�dd�}t ||¡ d S )	NrS   l    4;PUÑ  )r¯   rÄ  r‘   r¯   rÄ  r‘   r\  rj  )r   r1   r  r   r   Úfrom_productr7   rt   rn  r   r   r   Ú$test_groupby_unit64_float_conversion½  s   ýr&  c                 C   sä   |   t| d ƒ¡jdd�}|   | d ¡jdd�}tj||dd� tjtdd�� |   t| d d d… ƒ¡ W d   ƒ n1 s?w   Y  td	d
gddgt	j
 d¡ d¡dœƒ} |   ddg¡ ¡ }|   | d | d g¡ ¡ dg }d S )Nr   Tr4  FrÅ   z^'foo'$rQ   r'   r   rS   rH   rÜ   r"   )rŠ   r‹   ÚvalrŠ   r‹   r'  )r1   r2   re   r7   r8   rw   rx   ÚKeyErrorr   r5   rk   rl   r™   rn  r   r   r   Ú"test_groupby_list_infer_array_likeÉ  s   ÿýÿ$r)  c                  C   st   d} t tdƒd| d�}tddgddggd	d
g|d�}| td| d�d	g¡ ¡ }| |jd	g¡ t	¡}t
 ||¡ d S )NrÕ  z2015-09-29T11:34:44-0700r"   )Ústartr    rà   r   r`   r   é   Úmetricrý   rá   r   )r   rà   )r   r   r   r1   r	   re   r  r)   r…   rù   r7   r8   )rà   r)   r<   r   r   r   r   r   Ú$test_groupby_keys_same_size_as_indexÞ  s   
ÿr-  c                  C   s¶   d} t tj d¡ d¡tdƒd�}tjt| d�� | 	d¡ W d   ƒ n1 s(w   Y  t tj d¡ d¡tdƒd�}tjt| d�� | 	d¡ W d   ƒ d S 1 sTw   Y  d S )	Nz^'Z'$r"   )rS   rÜ   rÝ   ri  rQ   ÚZ)r"   rÜ   )
r   r5   rk   rl   r™   r2   rw   rx   r(  r1   )r~   Údf1r  r   r   r   Útest_groupby_one_rowë  s   ÿÿÿ"ÿr0  c                  C   sÆ  t tj d¡ d¡tjtdƒtjtdƒtjtdƒtjtdƒgtjdtjdtjdtjdgdœƒ} |  d¡}td	d
gƒtddgƒg}t	|j
 ¡ ƒ}t|ƒdksOJ ‚t||ƒD ]\}}t |j
| |¡ qTt |jjd j| ¡ |jdkstJ ‚tdƒtjd	d
gtjd�tdƒtjddgtjd�i}|jD ]}t |j| || ¡ q‘t | tdƒ¡| jd	d
g ¡ t | tdƒ¡| jddg ¡ tjtdd�� | tj¡ W d   ƒ n1 s×w   Y  t tjtjtjgtjtjtjgdœƒ}|d j dksøJ ‚|d j dk�sJ ‚dD ]\}| |¡}|j
i k�sJ ‚|jdk�sJ ‚|ji k�s#J ‚tjtdd�� | tj¡ W d   ƒ n	1 �s<w   Y  tjtdd�� | tj¡ W d   ƒ n	1 �sZw   Y  �qd S )Nr"   r�   z
2013-01-01z
2013-02-01rí   rî   )rý   Údtr  r1  rS   rY   rH   r!   r   z2013-01-01 00:00:00rŽ   z2013-02-01 00:00:00z^NaT$rQ   )r°   Únatr°   rE   r2  zdatetime64[ns]z^nan$)!r   r5   rk   rl   r™   r°   r   r1   r
   Úsortedr#  rO  ro   r›  r7   r¤  r8   Ú_grouperrô   rr  Úngroupsrš   Úintpr$  Úassert_numpy_array_equalrm  r0   rw   rx   r(  r+   r/   rB   )r<   r{   r   rO  r|   r±   Únan_dfr   r   r   r   Útest_groupby_nat_excludeú  sd   ø
ôÿ
þ
  ÿ ÿ
ÿÿ€ùr9  c                  C   sD   t tjtjgtjtjgddgdœƒ} |  ddg¡j}|i ks J ‚d S )NrS   r"   r  rí   rî   )r   r5   r°   r1   r$  ©r<   r   r   r   r   Ú#test_groupby_two_group_keys_all_nan9  s   $r;  c                  C   s�   t tdƒd�} ddg| d< ddg| d< ddg| d	< d
dg| d< |  dg¡jdd�}t ddgddgg¡}t |jt	dd	gƒ¡ t 
|j|¡ d S )Nr"   r(   Úg1Úg2r•   r   ÚzerosrS   rü   Úl1Úl2ÚlabelTr4  ç        rñ   )r   r3   r1   re   r5   rš   r7   r¤  rÖ   r
   r7  rý   )rå  ÚtmpÚ
res_valuesr   r   r   Útest_groupby_2d_malformed@  s   rE  c                  C   sŠ   t  t  d¡t  d¡t  d¡f¡} t  d¡}t|| || t j d¡ d¡dœƒ}| g d¢¡ ¡ }| g d¢¡ ¡ }t	|ƒt	|ƒksCJ ‚d S )Nr   iˆ  i¨a  r"   )r   r   r&   r�   rM  r�   )r�   r&   r   r   )
r5   Úconcatenater6   r   rk   rl   r™   r1   rW   ro   )r   r   r<   rv  r�  r   r   r   Útest_int32_overflowL  s   "
ûÿ
rG  c                  C   sz  t g d¢g d¢g d¢tj d¡ d¡dœƒ} dd„ | g d	¢ jD ƒ}t |¡}| jg d	¢d
d� 	¡ }t
 |jj|g d¢ ¡ dd„ | g d¢ jD ƒ}t |¡}| jg d¢d
d� 	¡ }t
 |jj|¡ dd„ | g d¢ jD ƒ}t |¡}| jg d¢d
d� 	¡ }t
 |jj|g d¢ ¡ t g d¢g d¢tj d¡ d¡dœƒ} |  ddg¡d }| 	¡ }dd„ fdd„}|| |ddgdƒ d S )N©rŠ   r‹   r¿  )rH   r"   rS   rc   r"   rH   ©rí   rî   r   rå  c                 S   ó   g | ]}t |ƒ‘qS r   ©Útuple©rç   Úrowr   r   r   rò   h  ró   z+test_groupby_sort_multi.<locals>.<listcomp>r  Trà  )rS   r"   r   c                 S   rJ  r   rK  rM  r   r   r   rò   m  ró   )r   rí   rî   c                 S   rJ  r   rK  ræ   r   r   r   rò   r  ró   )rî   r   rí   )r"   rS   r   ©r   rS   r"   r   rS   r"   )r   r   r   rS   rS   rS   r9  )rí   rî   rå  rí   rî   rå  c                 S   r  rU   rV   rK   r   r   r   rM   �  rN   z)test_groupby_sort_multi.<locals>.<lambda>c           	      S   sV   dd„ | | j D ƒ}t |¡}||  |¡| ƒ}| ¡ D ]\}}|| |ks(J ‚qd S )Nc                 S   rJ  r   rK  rM  r   r   r   rò   ‚  ró   zCtest_groupby_sort_multi.<locals>._check_groupby.<locals>.<listcomp>)rý   ÚcomÚasarray_tuplesafer1   r%  )	r<   r   rO  Úfieldr¸   Útupsr   r|   r}   r   r   r   Ú_check_groupby�  s   
ÿz/test_groupby_sort_multi.<locals>._check_groupby)r   r5   rk   rl   r™   rý   rP  rQ  r1   rW   r7   r7  r)   )r<   rS  r   r{   rT  r   r   r   Útest_groupby_sort_multi^  s:   üÿ	


ýÿrU  c                  C   st   t g d¢g d¢d dœƒ} d}tjt|d�� | jddd	� d
d„ ¡}W d   ƒ n1 s-w   Y  t || ¡ d S )N)rí   rí   rí   rî   rî   rî   rH  r"   )r   rd   r˜   rQ   r   FrO   c                 S   ó   | S rU   r   rK   r   r   r   rM   ’  ó    z/test_dont_clobber_name_column.<locals>.<lambda>)r   r7   rp   r›   r1   ru   r8   )r<   r~   r   r   r   r   Útest_dont_clobber_name_column‹  s   ÿÿrX  c                  C   sÂ   t tj d¡ d¡ttdƒtd�tdddd�d	�} | j	d
d„ dd�}| 
dd„ ¡}dd„ |D ƒ}t |¡}t ||¡ | d j	dd„ dd�}| 
dd„ ¡}dd„ |D ƒ}t |¡}t ||¡ d S )Nr"   rÛ   rÝ   rŽ   rÞ   r`   r   rß   rá   c                 S   r¼   rU   r½   rK   r   r   r   rM   �  r¿   z&test_skip_group_keys.<locals>.<lambda>FrO   c                 S   s   | j dd�d d… S )Nr   ©ru  rH   ©Úsort_valuesrK   r   r   r   rM   ž  ró   c                 S   s$   g | ]\}}|j d d�dd… ‘qS )r   rY  NrH   rZ  ©rç   r   r•   r   r   r   rò      s   $ z(test_skip_group_keys.<locals>.<listcomp>r   c                 S   r¼   rU   r½   rK   r   r   r   rM   ¥  r¿   c                 S   s   |   ¡ d d… S rJ   rZ  rK   r   r   r   rM   ¦  r»   c                 S   s    g | ]\}}|  ¡ d d… ‘qS rJ   rZ  r\  r   r   r   rò   ¨  s     )r   r5   rk   rl   r™   r
   r2   ré   r   r1   ru   r+   rP  r7   r8   rt   )Útsfr{   r   Úpiecesr   r   r   r   Útest_skip_group_keys–  s   ý

r_  c                 C   s8   | d   ¡ }d |_| | d ¡ d¡}|jd u sJ ‚d S )Nr&   r   rW   )r.   rd   r1   rs   )Úfloat_framerÕ  r   r   r   r   Útest_no_nonsense_name®  s   ra  c                  C   s\   t t d¡ dd¡ƒ} d| d< g d¢| d< |  d¡}| ddd	œ¡}|d jtjks,J ‚d S )
NrG   rH   r   Útest)gÍÌÌÌÌÌô?rÛ  gš™™™™™ù?ÚflrW   r‘  )rc  r"   )r   r5   r6   Úreshaper1   rs   rB   rE   )rL   r{   r   r   r   r   Útest_multifunc_sum_bug·  s   
re  c                 C   sV   dd„ }dd„ }|   d¡d  |¡}|   d¡d  |¡}t|tƒs#J ‚t ||¡ d S )Nc                 S   s   |   ¡ |  ¡ dœS ©N©r  r¬  rg  r”   r   r   r   r¸   Ã  r—   z(test_handle_dict_return_value.<locals>.fc                 S   s   t |  ¡ |  ¡ dœƒS rf  )r   r  r¬  r”   r   r   r   rÊ   Æ  s   z(test_handle_dict_return_value.<locals>.gr   r&   )r1   ru   rQ  r   r7   rt   )r<   r¸   rÊ   r   r   r   r   r   Útest_handle_dict_return_valueÂ  s   rh  Úgrouperr   r   c                    sÐ   dd„ }‡‡fdd„‰ ‡ fdd„}| j ˆdd�}d	}tjt|d
�� | |¡ W d   ƒ n1 s1w   Y  | ˆ ¡ | ˆ ˆ dœ¡ | |¡ |d  |¡ |d  ˆ ¡ |d  ˆ |g¡ |d  |¡ d S )Nc                 S   s   | j d usJ ‚| S rU   rj  r”   r   r   r   r¸   Ò  s   ztest_set_group_name.<locals>.fc                    sh   | j d usJ ‚ˆr0ˆ dkr0t| jƒr0tjtdd�� |  ¡  W d   ƒ d S 1 s)w   Y  d S |  ¡ S )Nr   zdoes not supportrQ   )rd   r   rB   rw   rx   rY  rW   r”   )ri  râ  r   r   ÚfreduceÖ  s   
"ÿz$test_set_group_name.<locals>.freducec                    s   ˆ | ƒS rU   r   rK   )rj  r   r   ÚfreducexÞ  s   z%test_set_group_name.<locals>.freducexFrO   r˜   rQ   r6  r&   )r1   r7   rp   r›   ru   rr   rv   )r<   ri  râ  r¸   rk  r{   r~   r   )rj  ri  râ  r   Útest_set_group_nameÐ  s   ÿ

rl  c                     sˆ   t g d¢t d¡dœƒ} g ‰ ‡ fdd„}d}tjt|d�� | jdd	d	d
� |¡ W d   ƒ n1 s3w   Y  g d¢}ˆ |ksBJ ‚d S )N)r   r   rS   rS   r"   r"   r9  rì   c                    s   ˆ   | j¡ |  ¡ S rU   )r]  rd   r.   r”   r\  r   r   r¸   ÷  s   z6test_group_name_available_in_inference_pass.<locals>.fr˜   rQ   rí   F)rá  rP   rc   )r   r5   r6   r7   rp   r›   r1   ru   )r<   r¸   r~   Úexpected_namesr   r\  r   Ú+test_group_name_available_in_inference_passñ  s   ÿrn  c                 C   sV   |   | d j¡ ¡ }|jjd u sJ ‚|   | d j| d jg¡ ¡ }|jjdks)J ‚d S )Nr   r   )NN)r1   rý   rW   r)   rd   r  r:  r   r   r   Útest_no_dummy_key_names  s   ro  c                  C   sÀ   t ddgddggg d¢g d¢gddgd�} tg d¢| d	�}t ddgddggg d
¢g d¢gddgd�} tg d¢| d	�}|jddgdd� ¡ }t ||¡ |jddgdd� ¡ }t || ¡ ¡ d S )NrS   r"   )r   r   r   r   rS   rS   )rS   rS   r   r   r   r   rí   rî   r  )r   rS   r"   rH   rÜ   r!   r(   rÀ  )rS   r   r   ©r   r"   rÜ   F©r   rá  T)r   r   r1   r¯   r7   rt   Ú
sort_index)r)   ÚmseriesÚmseries_resultr   r   r   r   Ú#test_groupby_sort_multiindex_series  s   ý"ÿru  c                  C   s‚   d} t dd| d�}tt | ¡t | ¡dœ|d�}ddd	„}| d
d„ ¡}| d|tjƒi¡}| d|tjdƒi¡}t ||¡ d S )Néè  z2012/1/1Ú5min)r*  rà   r    )ÚhighÚlowr(   Fc                    s   ‡ ‡fdd„}|S )z>
        Run an aggregate func on the subset of data.
        c                    sD   | j | j dd„ ¡  ¡ }ˆ r| | jd   t|ƒdkrd S ˆ|ƒS )Nc                 S   s
   | j dk S )NrL  )ÚhourrK   r   r   r   rM   ,  rì  zYtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._func.<locals>.<lambda>r   )r’   r)   r  Údropnaro   )rz   rå  ©ÚfixÚfuncr   r   Ú_func+  s   zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )r~  r}  r  r   r|  r   Ú
agg_before&  s   z8test_groupby_reindex_inside_function.<locals>.agg_beforec                 S   s   t | j| j| jƒS rU   )r   rã   r¾   rå   rK   r   r   r   rM   5  rh   z6test_groupby_reindex_inside_function.<locals>.<lambda>rx  T)F)	r   r   r5   r6   r1   rs   r  r7   r8   )r    Úindr<   r€  r{   Úclosure_badÚclosure_goodr   r   r   Ú$test_groupby_reindex_inside_function!  s   
r„  c                  C   sˆ   t g d¢g d¢g d¢dœƒ} |  ddg¡} | jddgdd�}| d	¡}tjg d
¢ddgd�}t dgdgdgg|dgd�}t ||¡ d S )N)rí   rí   rí   rî   )r   r   rå  r   )rS   rS   rS   r!   )Úgroup1Úgroup2r‘   r…  r†  Trq  rW   ))rí   r   )rí   rå  ©rî   r   r\  r"   rS   r!   r‘   rÜ  )r   r  r1   rs   r   r^  r7   r8   )r<   rÑ   rØ   r+  rg  r   r   r   Ú$test_groupby_multiindex_missing_pair<  s   ýÿ
ÿrˆ  c                  C   s|  t jg d¢ddgd�} tg d¢g| d�}|j ¡ sJ ‚tg d¢g d¢g d	¢gd
�}|jdddgdd�}| ¡ }|j ¡ r>J ‚| d¡ ¡ }t	 
t¡� | d¡ ¡ }W d   ƒ n1 s\w   Y  t	 ||¡ tg d¢g d¢g d¢dœƒ ddg¡}|j ¡ r�J ‚ddddgfD ]3}dD ].}|j||dd� tj¡}|}t	 ||¡ | ¡ j||dd� tj¡}| ¡ }t	 ||¡ qŒqˆd S )N))rí   Ú )Úb1Úc1)Úb2Úc2rî   r   r\  ©rS   rH   rÜ   ri  rI  )rS   rŠ  r‹  rH   )rS   rŒ  r�  rÜ   )rÖ   rz   rí   rå  )r)   rÖ   rý   )rí   rí   rî   rí   ©rS   rS   r"   r"   ©rS   r"   rH   rÜ   ©rL   r  ÚzrL   r  r   rS   )FTF)r   rá  rP   )r   r^  r   rÖ   Ú_is_lexsortedÚpivot_tabler†  r1   re   r7   rp   r   r8   r  r)   ru   Údrop_duplicatesrr  )Úlexsorted_miÚlexsorted_dfÚnot_lexsorted_dfr   r   r<   r   rá  r   r   r   Ú%test_groupby_multiindex_not_lexsortedQ  sP   ÿÿ
ÿÿÿ
þÿÿýóÿr™  c                  C   s  t tdƒg d¢d�} |  tdƒ¡}| dd„ ¡}| jg d¢ }t ||¡ | d }| tdƒ¡}| d	d„ ¡}| g d¢¡}t ||¡ | j	 
t¡| _	|  tdƒ¡}| d
d„ ¡}| jg d¢ }t ||¡ | d }| tdƒ¡}| dd„ ¡}| g d¢¡}t ||¡ d S )NÚABCDE)r"   r   r"   rS   rS   r(   Úababbc                 S   ó   t | ƒdkS rj   ©ro   rK   r   r   r   rM   ‡  rX   z4test_index_label_overlaps_location.<locals>.<lambda>rŽ  r   c                 S   rœ  rj   r�  rK   r   r   r   rM   �  rX   c                 S   rœ  rj   r�  rK   r   r   r   rM   ”  rX   c                 S   rœ  rj   r�  rK   r   r   r   rM   š  rX   )r   r2   r1   Úfilterr0   r7   r8   r&  rt   r)   r…   rù   )r<   rÊ   Úactualr   r;   r   r   r   Ú"test_index_label_overlaps_location‚  s(   r   c                  C   s‚   d} t  | ¡}t|d d| d| dœƒ}t|d d d| d| dœƒ}| d¡}| d¡}| d¡}| d¡}t ||¡ d S )	Nr9  r"   rû   ç      @r  rñ   rí   re   )r5   r6   r   r1   rv   r7   r8   )ÚnrL   r<   r  r=   r   Úgb2r   r   r   r   Ú"test_transform_doesnt_clobber_intsŸ  s   
 



r¤  Úsort_columnÚintsÚfloatsÚstringsÚgroup_columnÚ
int_groupsÚstring_groupsc                    sŒ   t g d¢g d¢g d¢g d¢g d¢dœƒ}|jˆ d�}| |¡}‡ fdd	„}d
}tjt|d�� | |¡ W d   ƒ d S 1 s?w   Y  d S )N)rH   rS   r   rS   r   rH   rH   rH   )r’  rí   r’  rí   rí   rÊ   rÊ   rÊ   )r�   rY   rÜ   r!   r"   rG   rS   rS   )gffffff@g333333@gÍÌÌÌÌÌ@g333333Àgš™™™™™@çš™™™™™ñ?r¬  r!   )r’  rå  rí   r±   ÚwordÚword2Ú42Ú47)rª  r«  r¦  r§  r¨  rY  c                    s   t  | | jˆ d�¡ d S )NrY  )r7   r8   r[  rK   ©r¥  r   r   Ú	test_sortÈ  s   z.test_groupby_preserves_sort.<locals>.test_sortr˜   rQ   )r   r[  r1   r7   rp   r›   ru   )r¥  r©  r<   rÊ   r²  r~   r   r±  r   Útest_groupby_preserves_sort®  s   ûÿ
"ÿr³  c                  C   s’   t tt ¡ ddd� ¡ tdƒdœƒ} |  d¡jj| d< |  d¡jj	| d< t
jtdd	�� |  ¡ jddd
dd� W d   ƒ d S 1 sBw   Y  d S )Nra   ÚMErß   )Ú	eventDateÚthenamerµ  rã   r¾   z	'badname'rQ   Úbadnamer€  )r)   rÖ   rý   Úaggfunc)r   r   r   ÚtodayÚtolistr3   r  r)   rã   r¾   rw   rx   r(  r†  r”  rï   r   r   r   Ú!test_pivot_table_values_key_errorÐ  s   þÿÿ"ÿr»  rÖ   r&   rO  rý   rB  rí   rS   z
US/Easternr$   ú
2016-01-01rH   r�   rß   ÚInt64rŽ   ÚFloat64Úboolean)ÚboolÚintrù   r  rê  Údt64Údt64tzÚperiodr½  r¾  r¿  )ÚidsÚmethod)rŒ  rs   ru   )r“   Úidxminr¬  r  rW   r®  rµ  c                    s¼  d }t ˆtƒrˆdv rd}t ˆd tƒrˆdv rd}tˆˆˆdœtdƒd�}	tˆd	ƒr5|	jˆjk ¡ s5J ‚|	j	d d… }	|	j
ˆd
|d
d�|  ‰ ‡ ‡‡fdd„}
‡‡‡fdd„}t |	jj	d tjƒ}|	jj	d jdk}t ˆtƒ}t ˆtƒrÃˆjsÃˆdv rÃˆdv rˆdˆ› d�}t}ndˆ› d�}t}tj||d�� |
ƒ  W d   ƒ n1 s¥w   Y  ˆdv rÁt | tƒrÁ|
dd�}|ƒ }t ||¡ d S ˆdv �r)|sÏ|sÏ|�r)|rÔd}n|rÙd}nd}ˆdkræd |d g¡}tjt|d�� |
ƒ  W d   ƒ n1 sûw   Y  t | tƒ�sd S ˆdk�rd S |
dd�}|	 ˆ¡g  }|�r!|ƒ }t ||¡ d S |
ƒ }|	 ˆ¡|  }ˆd!v �r?| |	jj¡}|d u�rI| |¡}tˆƒd"k�rVˆd |j_t ||¡ d S )#N)rW   r®  r½  r   )r®  rW   rC   r*   ÚABCri  rB   F)rP   r{  Úobservedc                     s2   ˆdkrt ˆ ˆƒdi | ¤ŽS t ˆ ˆƒˆfi | ¤ŽS )NrŒ  r   )r  )Úkwargs)r=   rÆ  r[  r   r   Ú
get_result  s   z&test_empty_groupby.<locals>.get_resultc                     sh   t dgˆjd�} tˆ ƒdkrtj| | gˆ d�}nt| ˆ d d�}ˆr)tg dd�}ng }tg ||d�}|S )Nr   rŽ   rS   r\  rj  rÞ  rá   )r   rB   ro   r   r%  r
   r   )Úlevr+  rÖ   r   )rO  râ  rý   r   r   Ú get_categorical_invalid_expected#  s   z<test_empty_groupby.<locals>.get_categorical_invalid_expectedÚM)r¬  r  rÇ  r“   )r¬  r  zCannot perform z with non-ordered Categoricalz
Can't get z/ of an empty group due to unobserved categoriesrQ   Tr4  )r®  rW   rµ  z datetime64 type does not supportzPeriod type does not supportzcategory type does not supportrµ  ú|z!does not support reduction 'skew')r“   rÇ  rS   )rQ  r   rÀ  r   r2   Úhasattrrœ   rB   r'  r0   r1   r+   ÚPeriodDtypeÚkindr   ÚorderedrY  r¡  rw   rx   r7   Úassert_equalÚjoinr  r…   r)   ro   rd   )rÖ   rO  rý   rÆ  r[  Úusing_array_managerr{  râ  Úoverride_dtyper<   rË  rÍ  Úis_perÚis_dt64Úis_catr~   r³  r   r   r   )r=   rO  rÆ  r[  râ  rý   r   Útest_empty_groupbyâ  s€   '

ÿþÿ

ÿ




rÛ  c                  C   sž   t tj d¡ d¡ƒ} | d  tj¡| d< g d¢| _| j| d dd�}d}t	j
t|d	�� | d
d„ ¡}W d   ƒ n1 s>w   Y  |j| jk ¡ sMJ ‚d S )Nr"   )r   rÜ   rH   ©r   rS   r"   r   rS   FrO   r˜   rQ   c                 S   rV  rU   r   rK   r   r   r   rM   ˆ  rW  z<test_empty_groupby_apply_nonunique_columns.<locals>.<lambda>)r   r5   rk   rl   r™   r…   rC   rÖ   r1   r7   rp   r›   ru   rœ   r'  )r<   r=   r~   rØ   r   r   r   Ú*test_empty_groupby_apply_nonunique_columns€  s   
ÿrÝ  c                  C   sž   t g d¢g d¢g d¢g d¢dœƒ} tjtdd�� | g d¢  d¡ W d   ƒ n1 s,w   Y  |  d¡d  ¡ }td	gdtd
gdd�d�}t 	||¡ d S )N)rS   rS   rS   rS   )r"   r"   r"   r"   )rì   rí   rî   r   z
('a', 'b')rQ   r  rì   r   rÜ   rS   rj  rl  )
r   rw   rx   r(  r1   rW   r   r
   r7   rt   rn  r   r   r   Útest_tuple_as_groupingŒ  s   üÿ	ÿrÞ  c                  C   sf   t dtdƒt ddgddgg¡d�} tjtdd�� |  d¡ ¡  W d   ƒ d S 1 s,w   Y  d S )	NrS   rH   r"   rÜ   rÜ  z
^\(7, 8\)$rQ   )rY   r�   )	r   r3   r   r%  rw   rx   r(  r1   re   rï   r   r   r   Útest_tuple_correct_keyerrorŸ  s   $"ÿrß  c               	   C   sŠ   t dgdggtdgdd�tddddd	�d
�} t g d¢g d¢gtjdg d¢d�tddddd	�d
�}|  tdd�¡ ddg¡}t 	||¡ d S )NrS   rŠ   Úmycolsrj  ú
2018-01-01r"   r�   Údti)r    rà   rd   rá   )rS   rS   rS   rS   rS   ))rŠ   rW   rŠ   )rŠ   ÚohlcÚopen)rŠ   rã  rx  )rŠ   rã  ry  )rŠ   rã  Úclose)rà  NNr\  )rà   rW   rã  )
r   r
   r   r   r^  r1   r	   rs   r7   r8   r  r   r   r   Útest_groupby_agg_ohlc_non_first¦  s   
ýø
ôræ  c                  C   sŒ   t jdftdddƒdftdddƒdftdddƒdfg} tj| dd gd�}tg d	¢|d
�}|jdd� ¡ }tddgddgd
�}t 	||¡ d S )Nrí   iÜ  rS   r"   rî   rH   Údater\  )rH   r"   ç      @rÜ   r(   rº  r¡  rè  )
r+   r/   r   r   r^  r   r1   re   r7   rt   )rý   rc  r;   r   r   r   r   r   Útest_groupby_multiindex_natÂ  s   üré  c                  C   sf   t tdƒtdƒƒ} t| ddgd�}d}tjt|d�� | g g¡ W d   ƒ d S 1 s,w   Y  d S )Nr`   Úapplerî   ri  z$Grouper and axis must be same lengthrQ   )r›  r3   r   rw   rx   r¡  r1   )rý   r<   r~   r   r   r   Útest_groupby_empty_list_raisesÒ  s   "ÿrë  c                  C   sŽ   ddgddgddgg} g d¢}t j| |d�}tddg|d	�}| d
dg¡ ¡ }dgdgg} d
dg}t j| |d�}tdg|d�}t ||¡ d S )NrL   rí   rî   r|   )r¯   rÄ  Úthirdr\  rS   r"   rØ  r¯   rì  rH   r(   )r   Úfrom_arraysr   r1   rW   r7   rt   )Úindex_arrayÚindex_namesÚrirÕ  r   Úeir   r   r   r   Ú8test_groupby_multiindex_series_keys_len_equal_group_axisÛ  s   rò  c                  C   s    t jddgddggddgd�} tg d¢g d	¢d
œ| d�}| tdd�dg¡}| ddg¡}|j|jks5J ‚| dtdd�g¡}| ddg¡}|j|jksNJ ‚d S )Nr   r   r&   r�   rt  Úbetar\  )rS   r"   rS   r"   r�  r7  r(   rº  )r   r%  r   r1   r	   r#  )rc  r<   r   r   r   r   r   Ú"test_groupby_groups_in_BaseGrouperë  s   rô  Ú
group_namerL   c                 C   sB  t t d¡ dd¡g d¢g d¢d�}d|j_d|j_d	}tjt	|d
�� |j
| dd�}W d   ƒ n1 s5w   Y  | ¡ }|j 
| ¡ ¡ j}t ||¡ g d¢ddgg}tj|ddgd�}t t d¡ dd¡g d¢|d�}tjt	|d
�� |j
| dd�}W d   ƒ n1 s‡w   Y  | ¡ }|j 
| ¡ ¡ j}t ||¡ d S )NrZ   rH   rÜ   ©r   rS   r   )r`   ra   r`   ra   rÜ  r  rL   r.  rQ   rS   r³   )r‹   r¿  rŠ   r^   r_   Úx1)Ú	iterablesr  é   r9  )r   r5   r6   rd  r)   rd   rÖ   r7   rp   rq   r1   rW   r×   r8   r   r%  )rõ  r<   r  r=   Úresultsr   rø  rc  r   r   r   Útest_groupby_axis_1ù  s*   ÿÿ ÿrû  zop, expectedÚshiftÚtimeú2019-01-01 12:00:00ú2019-01-01 12:30:00Úbfillú2019-01-01 14:00:00ú2019-01-01 14:30:00Úffillc                    s„   | ‰ g d¢t dƒt dƒd d t dƒt dƒgdœ}t|ƒj‡ fdd„d	�}| d
¡}t||ƒƒ }t|ƒj‡ fdd„d	�}t ||¡ d S )N)r   r   r   r   r   r   rþ  rÿ  r  r  )r  rý  c                    ó   | j j ˆ ¡S rU   ©rý  r1  Útz_localizerK   r$   r   r   rM   O	  r  z+test_shift_bfill_ffill_tz.<locals>.<lambda>)rý  r  c                    r  rU   r  rK   r$   r   r   rM   S	  r  )r   r   Úassignr1   r  r7   r8   )Útz_naive_fixturer[  r   rz   r<   r{   r   r   r$   r   Útest_shift_bfill_ffill_tz	  s   .úþ
r	  c                  C   sD   t d gddœƒ} |  d¡d  d¡}ttjgdd�}t ||¡ d S )NrS   )rÊ   rL   rÊ   rL   rW   rj  )r   r1   rv   r   r5   r°   r7   rt   )r<   rŸ  r   r   r   r   Útest_groupby_only_none_groupW	  s   r
  c                  C   sL   t g d¢g d¢d�} | jdd�}| ¡ }t g d¢g d¢d�}t ||¡ d S )N)r"   r!   r9  r�   )rû   rú   rú   rä  r(   r   rº  )r"   g      @r�   )rû   rú   rä  )r   r1   re   r7   rt   )r;   r=   r   r   r   r   r   Útest_groupby_duplicate_indexa	  s
   r  c                 C   s  t dtdƒddggg d¢d�}|d  t¡|d< |d  t¡|d< | d	d
g¡}| dkr/d}nd}| dkr7tnd }d}tj||d�� |jd d…  	d	g¡j
| g|¢R Ž }W d   ƒ n1 s_w   Y  tj||d�� | 	d	g¡j
| g|¢R Ž jd d… }W d   ƒ n1 sˆw   Y  | dv r–| t¡}t ||¡ d}tj||d�� |d jd d…  	d	g¡j
| g|¢R Ž }W d   ƒ n1 sÄw   Y  d}tj||d�� |d  	d	g¡j
| g|¢R Ž jd d… }W d   ƒ n1 sñw   Y  | dv rÿ| t¡}t ||¡ d S )NrS   r¹  rH   rÜ   )Úcol_1Úcol_2Úcol_3Úcol_4©rz   rÖ   r  r  r  r  Úfillna)r  r   ú%DataFrameGroupBy.fillna is deprecatedrQ   r   )Údiffrü  z"SeriesGroupBy.fillna is deprecated)r   r   r…   rÁ  r  rq   r7   rp   r0   r1   rv   rÔ  )Útransformation_funcÚrequestr<   ÚargsrÒ   Úwarn_msgr   r   r   r   r   Útest_group_on_empty_multiindexk	  s`   þ&ÿ&ÿ
ÿýýÿÿþþýÿÿ
r  c                 C   s�  t dddd�}tddgddgddgdœƒ}d	|j_||_| | ¡}|s)|j}d
}nd}tjt	|d�� |j
|dd�}W d   ƒ n1 sDw   Y  | ¡ }tddgddgdœ|d�}d|j_|sc|j}t ||¡ |dkr’tjt	|d�� |g  j
|dd�}W d   ƒ n1 sˆw   Y  |g  }	n*tjt	|d�� |jg  j
|dd�}W d   ƒ n1 s®w   Y  |jg   tj¡}	| ¡ }
t |
|	¡ d S )Nr¼  r"   rŠ   )r    rd   rS   rH   r   )r  )r   r&   )r�   r   )r‹   r¿  r/  r.  rQ   )r´   r   )r   r�   r(   r‹   )r   r   rÖ   r  r)   Ú_get_axis_numberr×   r7   rp   rq   r1   Únuniquerd   r8   r’   r…   r5   rE   )r´   râ  r<   Úaxis_numberr~   r=   r   r   r£  rg  rØ   r   r   r   Útest_groupby_crash_on_nunique˜	  s:   
ÿÿ
ÿr  c                  C   s>   t t dd¡ dd¡td�} | jdgd� ¡ }t || ¡ d S )Nr   rG   rH   rŽ   rº  )	r   r5   r6   rd  rù   r1   re   r7   r8   )r   r   r   r   r   Útest_groupby_list_levelÁ	  s   r  zmax_seq_items, expected))r!   z({0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})rÜ   z%{0: [0], 1: [1], 2: [2], 3: [3], ...})rS   z{0: [0], ...}c                 C   s’   t tj d¡ d¡ƒ}|j|d< t d| ¡�) | d¡j	 
¡ }||ks%J ‚| t |j¡¡j	 
¡ }||ks7J ‚W d   ƒ d S 1 sBw   Y  d S )Nr"   )r!   rS   rí   zdisplay.max_seq_items)r   r5   rk   rl   r™   r)   r+   Úoption_contextr1   r#  Ú__repr__rš   rí   )Úmax_seq_itemsr   r<   r   r   r   r   Útest_groups_repr_truncatesÈ	  s   

"ûr!  c                  C   s†   t ddddœddddœgƒ} |  ddg¡} |  ddg¡}|j}dtjd	dgtjd
�i}t|ƒdks3J ‚d}|| || k ¡ sAJ ‚d S )NrS   r"   éc   r  éX   rí   rî   rÕ   r   rŽ   )	r   r  r1   r$  r5   rš   rC   ro   r'  )r<   r¥   r   r   r   r   r   r   Ú6test_group_on_two_row_multiindex_returns_one_tuple_keyÝ	  s   r$  zklass, attr, valuer   rá  rP   rÉ  r{  c                 C   sr   t dgdgdgdœƒ}|dkr| d¡}|jdi ||i¤Ž}| t u r'|dg n|d }t||ƒt||ƒks7J ‚d S )	NrS   r"   rH   r  r´   rí   rî   )rí   )r   r  r1   r  )r³  rŒ  r‘   r<   r   r   r   r   r   Ú#test_subsetting_columns_keeps_attrsë	  s   
r%  c                  C   s¢   t dgdgdgdœƒ} d}tjt|d�� | jg d¢dd�}W d   ƒ n1 s(w   Y  d	}tjt|d�� |d
dg  ¡  W d   ƒ d S 1 sJw   Y  d S )NrS   r"   rH   r*   r.  rQ   rÀ  r³   z'Cannot subset columns when using axis=1r   r   )	r   r7   rp   rq   r1   rw   rx   r¡  rW   )r<   r~   rÊ   rR   r   r   r   Útest_subsetting_columns_axis_1
  s   ÿ"ÿr&  r~  )rW   Úanyrü  c                 C   sH   t dgdd�}tdgg|d�}| dg¡}t|| ƒƒ j}t ||¡ d S )Nrí   r+  rj  rS   ri  )r
   r   r1   r  rÖ   r7   r¤  )r~  r   r<   rÑ   r   r   r   r   Ú#test_groupby_column_index_name_lost
  s
   r(  Úinfer_stringÚpyarrow)Úmarksc                 C   sª   | rt  d¡ tg d¢g d¢g d¢dœƒ t¡}g d¢|_t d| ¡� | g d¢¡ 	¡ }W d   ƒ n1 s7w   Y  tg d	¢gt
 d
g¡g d¢td�}t ||¡ d S )Nr*  )r¸   r±   rÊ   ræ  rI  r�  r*   )r   r   r   zfuture.infer_string)r   r   r   r   )r±   rí   rS   r   )r)   rÖ   rB   )rw   Úimportorskipr   r…   ré   rÖ   r+   r  r1   r¬  r5   rš   r7   r8   )r)  r<   r   r   r   r   r   Útest_groupby_duplicate_columns
  s   	
ÿþ
ÿÿr-  c                  C   s\   t g d¢g d¢dd�} d| j_| jdd� ¡ }t dd	gd
dgdd�}d|j_t ||¡ d S )Nr�  r�  )rí   rí   ©r)   rd   )rî   rî   r   rº  r"   rÜ   rS   )r   r)   rd   r1   Úlastr7   rt   )r;   r   r   r   r   r   Ú#test_groupby_series_with_tuple_name3
  s   r0  zfunc, valuesrW   ç     @X@ç     €X@re   g     @8@g     €8@c                 C   s`   g d¢}t ddgd ||dœƒ}t| d¡| ƒƒ }t ||dœtddgdd�d	�}t ||¡ d S )
N©ç €à7yÃACr4  éa   éb   ç €à7yÃ1Ãr7  r7  r7  rS   r"   rÜ   ©r•   rí   rî   r•   rì   rj  r(   )r   r  r1   r
   r7   r8   )r~  rý   rz   r<   r   r   r   r   r   Ú)test_groupby_numerical_stability_sum_mean=
  s
   r9  c                  C   sr   g d¢} t ddgd | | dœƒ}| d¡ ¡ }dgd dd	g d
dg ddg }t ||dœƒ}tj||dd� d S )Nr3  rS   r"   rÜ   r8  r•   r4  g0€à7yÃACg1€à7yÃACga€à7yÃ1Cgb€à7yÃ1Cr1  r2  rì   T)Úcheck_exact)r   r1   rk  r7   r8   )rz   r<   r   Úexp_datar   r   r   r   Ú'test_groupby_numerical_stability_cumsumI
  s    ÿr<  c                  C   sz   t j d¡ d¡} t| ƒ}tdƒD ]
}t j|j||f< qd|d< | d¡}|j	dd�}|g d¢ j	dd�}t
 ||¡ d S )	Nr"   )r!   r!   r!   rS   r   F©Úskipnaró  )r5   rk   rl   r™   r   r3   r°   r0   r1   rk  r7   r8   )r  r<   Úir=   rØ   r   r   r   r   Ú test_groupby_cumsum_skipna_falseU
  s   
r@  c                  C   sÆ   t ddd�} t| ƒ| d  }tj|d< td|dœƒ}| d¡}|jd	d
d�}td|d |d tj|d |d d giƒ}t ||¡ |jd	d	d�}td|d |d tjtjtjgiƒ}t ||¡ d S )Nr¼  r!   r   r   r"   rS   r  r   FT)r5  r>  r   rÜ   )	r   r   r+   r/   r   r1   rk  r7   r8   )râ  r;   r<   r=   rØ   rg  r   r   r   Útest_groupby_cumsum_timedelta64e
  s   

,$rA  c                 C   s4   | }|j dd� ¡ }|  |j¡ ¡ }t ||¡ d S )Nr   rº  )r1   re   r)   r7   rt   )Ú(rand_series_with_duplicate_datetimeindexÚdupsr   r   r   r   r   Ú!test_groupby_mean_duplicate_indexw
  s   rD  c                  C   sT   t g d¢tjtjtjgƒ} |  | j¡ ¡ }t g tg tjd�tjd�}t	 
||¡ d S )Nrë   rŽ   rI   )r   r5   r°   r1   r)   rW   r
   rE   rC   r7   rt   ©rÕ  r   r   r   r   r   Ú test_groupby_all_nan_groups_drop~
  s   rF  c                 C   s–   t g g d¢d�}|jddg| d�}|j|d�}| r.tg g gg g gddgd�}|s+dgng }ntd	ƒ}|s8g d¢nddg}t g ||d
�}t ||¡ d S )Nr*   r  r   r   rÂ   r4  r\  r&   r   rá   )r   r1   rW   r   r   r7   r8   )rÃ   r5  r<   r=   r   r)   rÖ   r   r   r   r   Útest_groupby_empty_multi_column†
  s   rG  c                  C   s€   t ddggddggddggddgggddgd�} t dddgddggitddgd	dd
�d�}| jdgd�}| ¡ }t ||¡ d S )NrÎ  rS   ÚWr`   ra   ÚMWr}   ri  ré   ©rB   rd   r(   rY  )r   r
   r1   rW   r7   r8   ©r<   r   r=   r   r   r   r   Ú*test_groupby_aggregation_non_numeric_dtype–
  s   (ÿÿürL  c                  C   sš   t g d¢dd„ tddƒD ƒdd„ tddƒD ƒdœƒ} t dd„ td	d
ƒD ƒdd„ td	d
ƒD ƒdœtddgddd�d�}| jdgd�}| ¡ }t ||¡ d S )N©rS   r   rS   rS   r   c                 S   ó   g | ]}t |d ƒ‘qS ©Údays©r   ©rç   r?  r   r   r   rò   ­
  rÊ  zDtest_groupby_aggregation_multi_non_numeric_dtype.<locals>.<listcomp>rS   r9  c                 S   ó   g | ]	}t |d  dƒ‘qS ©r`   rP  rQ  rR  r   r   r   rò   ®
  r  r‘  c                 S   rN  rO  rQ  rR  r   r   r   rò   ´
  rÊ  rY   rG   c                 S   rS  rT  rQ  rR  r   r   r   rò   µ
  r  ©r  r’  r   rC   rL   rJ  r(   rY  )r   r3   r
   r1   rW   r7   r8   rK  r   r   r   Ú0test_groupby_aggregation_multi_non_numeric_dtype¨
  s   ýÿþûrV  c                  C   sˆ   t g d¢dd„ tddƒD ƒttddƒƒdœƒ} t tddƒtd	dƒgdd	gd
œtddgddd�d�}| jdgd�}| ¡ }t ||¡ d S )NrM  c                 S   rN  rO  rQ  rR  r   r   r   rò   Ä
  rÊ  zKtest_groupby_aggregation_numeric_with_non_numeric_dtype.<locals>.<listcomp>rS   r9  r‘  rY   rP  r�   rU  r   rC   rL   rJ  r(   rY  )	r   r3   r2   r   r
   r1   rW   r7   r8   rK  r   r   r   Ú7test_groupby_aggregation_numeric_with_non_numeric_dtype¿
  s   ýÿþrW  c                  C   s„   dddddœdddddœdddddœg} t | ƒ}||d dk }| d¡}| ¡ }t g d	¢gg d
¢tdgdd�d�}t ||¡ d S )NFTg      %@)Ú
filter_colÚgroupby_colÚbool_colÚ	float_colg     €4@g     €>@rX  rY  )rB  rB  g$+¿ÆH@)rX  rZ  r[  rj  rá   )r   r1   r4   r
   r7   r8   )Údictsr<   Ú	df_filterÚdfgbr   r   r   r   r   Útest_groupby_filtered_df_stdÓ
  s   ý
ýr_  c                  C   sž   t ttdƒƒttg d¢ƒdd�tjg d¢ddgd�d	œƒ} | jd
dgdd�j}d
tdƒft	 
dg¡dtdƒft	 
dg¡dtdƒft	 
dg¡i}||ksMJ ‚d S )NÚabc)rá  z
2018-02-01z
2018-03-01ÚcategoryrŽ   )r'   r   rS   r   rS   )Ú
categoriesr  rí   rî   F©rÉ  z2018-01-01 00:00:00z2018-02-01 00:00:00r   z2018-03-01 00:00:00r"   )r   r   r2   r   r   Ú
from_codesr1   r$  r   r5   rš   rn  r   r   r   Ú2test_datetime_categorical_multikey_groupby_indicesç
  s   

þúÿ
ýre  c                  C   s¢   dgd dgd  } t jt jdddgt jddddg }t| |gƒj}dd	g|_d
}tjt|d�� | d¡d	 j	ddd� 
¡  W d   ƒ d S 1 sJw   Y  d S )NÚAlicer!   ÚBobrS   r"   rH   rÜ   rd   r'  z@^[a-zA-Z._]*\(\) got an unexpected keyword argument 'min_period'rQ   )ÚwindowÚ
min_period)r5   r°   r   r×   rÖ   rw   rx   rY  r1   ÚrollingrW   )Úname_lÚval_lÚtest_dfÚresult_error_msgr   r   r   Ú#test_rolling_wrong_param_min_periodü
  s   "
ÿ"ÿro  rÞ  c                 C   sx   t g d¢g d¢tg d¢| d�dœƒ}tjddœ}| dg¡ |¡}t d	d
gd	gddgddgdœƒ d¡}t ||¡ d S )N)ÚThomasrp  úThomas John)i°  i  é„  )ÚsadÚhappyrt  rŽ   )ÚNameÚCreditÚMoodrW   )rw  rv  ru  rt  rs  iÄ	  rr  rp  rq  )rw  rv  ru  )r   r   Úmoder1   rs   r  r7   r8   )rB   r<   Úaggregate_detailsr   Úexpected_resultr   r   r   Ú.test_by_column_values_with_same_starting_value
  s"   	ýÿ
ýÿúr{  c                  C   sn   g d¢g d¢g} t dtj| ddgd�d�}|jddgd	� ¡ }t dd
gtjddgddgd�ƒ}t ||¡ d S )N)NrS   r   rS   )r"   rH   r"   rH   rS   rí   rî   r\  r(   r   rº  r"   )rB  r"   )rñ   rH   )r   r   rí  r1   rW   r^  r7   rt   )r  r;   r   r   r   r   r   Ú#test_groupby_none_in_first_mi_level(  s   ÿr|  c                  C   sd   t g d¢g d¢g d¢dœƒ} | jd gd� ¡ }t ddgdd	gd
œtddgd d�d�}t ||¡ d S )Nr�  )rS   rS   r"   rH   )rÜ   r!   r9  rY   )Nrî   r   rY  r"   r!   rG   é   r‡  rS   rj  r(   )r   r1   rW   r
   r7   r8   rn  r   r   r   Útest_groupby_none_column_name3  s   &r~  Ú	selectionc                 C   sr   t ddgtjdgtjdgdœddgd�}| d u r| dg¡n| dg¡|  }d	d
„ |D ƒ}ddg}||ks7J ‚d S )NrS   r"   r!   r  rL   r  r(   rí   c                 S   ó   g | ]\}}|‘qS r   r   ©rç   r   rð  r   r   r   rò   @  ró   z5test_single_element_list_grouping.<locals>.<listcomp>©rS   )r"   )r   r5   r°   r1   )r  r<   r{   r   r   r   r   r   Ú!test_single_element_list_grouping;  s
   ($rƒ  c                  C   sv   t g d¢g d¢dœƒ} | d  d¡| d< t g d¢g d¢dœƒ}|d  d¡|d< | jddd	�}| ¡ }t ||¡ d S )
N)rí   rî   r   rí   )rS   r"   rH   r"   )Ústr_colÚnum_colr„  Ústringr  )rÛ  rû   r¡  FrÂ   )r   r…   r1   re   r7   r8   )r<   r   r{   r   r   r   r   Útest_groupby_string_dtypeF  s   úÿ
r‡  zlevel_arg, multiindex)©r   F)rˆ  Tc                 C   s„   t ddgddgddgdœdd	gd
�}|r| ddg¡}d}tjt|d�� dd„ |j| d�D ƒ W d   ƒ d S 1 s;w   Y  d S )NrS   r"   rH   rÜ   r!   r9  r  rL   r  r(   rí   rî   zÏCreating a Groupby object with a length-1 list-like level parameter will yield indexes as tuples in a future version. To keep indexes as scalars, create Groupby objects with a scalar level parameter instead.rQ   c                 S   r€  r   r   r�  r   r   r   rò   i  ró   zKtest_single_element_listlike_level_grouping_deprecation.<locals>.<listcomp>rº  )r   r  r7   rp   rq   r1   )Ú	level_argr  r<   r  r   r   r   Ú7test_single_element_listlike_level_grouping_deprecationZ  s   $ÿ"ÿrŠ  )rW   rk  Úcumprodr®  c                 C   sj   d}t d|gdœƒ}t| d¡| ƒƒ | }t ddgitdgdd�d�}| d	v r-|jd
d�}t ||¡ d S )Nl   ÌL™33ffrS   rì   rí   rî   r   rj  r(   )rk  r‹  Tr�  )r   r  r1   r
   r†  r7   r8   )r~  r'  r<   r   r   r   r   r   Ú#test_groupby_avoid_casting_to_floatl  s   rŒ  z	func, val)rW   rH   )r®  r"   c                 C   s\   t dddtjgdœ| d�}t| d¡|ƒƒ }t d|gitdgd| d�| d�}t ||¡ d S )	NrS   r"   rì   rŽ   rí   rî   r!  rI   )r   r+   ÚNAr  r1   r
   r7   r8   )Úany_numeric_ea_dtyper~  r'  r<   r   r   r   r   r   Útest_groupby_sum_support_maskx  s   ýr�  z
val, dtype)éo   rÁ  )éÞ   Úuintc                 C   sì   t d| | gdœ|› d�d�}| d¡ ¡ }t d| d gitdgd|› d�d�|› d	�d
�}t ||¡ | d¡ ¡ }t d| | d gi|› d	�d�}t ||¡ | d¡ ¡ }t d| |  gitdgd|› d�d�|› d	�d
�}t ||¡ d S )NrS   rì   Ú8rŽ   rí   rî   r"   r!  Ú64rI   )r   r1   rW   r
   r7   r8   rk  r®  )r'  rB   r<   r   r   r   r   r   Útest_groupby_overflow…  s$   ýýr•  zskipna, val)TrH   c                 C   sT   t ddtjdgdœ| d�}| d¡j|d�}t ddtj|gi| d�}t ||¡ d S )NrS   r"   rì   rŽ   rí   r=  rî   )r   r+   r�  r1   rk  r7   r8   )rŽ  r>  r'  r<   r   r   r   r   r   Útest_groupby_cumsum_maskž  s   þr–  zval_in, index, val_out)rñ   rû   r¡  rú   rä  )rŠ   rŠ   r‹   r¿  Úblah)r¡  rú   rä  r¡  )rñ   rû   r¡  rú   rä  g      @)rŠ   rŠ   r‹   r¿  r—  r—  )r¡  rú   g      &@r¡  c                 C   st   t | dt|dd�d�}| d¡ ¡ }t |dtg d¢dd�d�}t ||¡ | ¡  d¡ ¡ }| ¡ }t ||¡ d S )Nrý   r—  rj  )rz   rd   r)   )r‹   r¿  r—  rŠ   )r   r
   r1   rW   r7   rt   r-   r8   )Úval_inr)   Úval_outÚseriesr   r   r   r   r   Ú(test_groupby_index_name_in_index_contentª  s   ýr›  r¢  )rS   r`   é    ry  rv  c                 C   s`   t ddg|  dœƒ}|d  d¡|d< | d¡ ¡ }t d| gitdgdd�d�}t ||¡ d S )NrS   T)rY  rÀ  rÀ  rY  rj  r(   )r   Úeqr1   rW   r
   r7   r8   )r¢  r<   r   r   r   r   r   Útest_sum_of_booleansÉ  s
   rž  z<ignore:invalid value encountered in remainder:RuntimeWarning)r!  Útailr…  r¯   r/  c                 C   s¬   t dtjdtjdgtdƒdœƒ}| dkr t| d¡| ƒdd	�}n	t| d¡| ƒƒ }| d
v r?t dg d¢iƒ tg d¢dd�¡}nt g d¢g d¢dœg d¢d�}t 	||¡ d S )Nrí   rî   r   r!   r  r…  r   r   )r¢  )r¯   r/  r   rp  r  rj  r(   )
r   r5   r°   r3   r  r1   r  r   r7   r8   )rÆ  r<   r   r   r   r   r   Útest_groupby_method_drop_naÓ  s    ÿr   c                  C   sr  t jdddd�} ttdƒƒd }|  ¡ }| |¡}tjtdd�� | 	¡  W d   ƒ n1 s/w   Y  tjtdd�� | 
¡  W d   ƒ n1 sJw   Y  tjtd	d�� | ¡  W d   ƒ n1 sew   Y  tjtd
d�� | ¡  W d   ƒ n1 s€w   Y  | ¡ }|dd … }ttdƒtd�|_t ||¡ | ¡ }|d d… }ttdƒtd�|_t ||¡ d S )Nr¼  ry  r�   rß   r`   z+Period type does not support sum operationsrQ   z.Period type does not support cumsum operationsz,Period type does not support prod operationsz/Period type does not support cumprod operationsiöÿÿÿrŽ   )r+   Úperiod_ranger2   r3   Ú	to_seriesr1   rw   rx   rY  rW   rk  r®  r‹  r  r
   rÁ  r)   r7   rt   r¬  )ÚpiÚgrpsr;   r=   rØ   r   r   r   r   Útest_groupby_reduce_periodé  s8   

ÿÿ
ý
ÿÿ
ýr¥  c                  C   sN   t g d¢gƒ} g d¢| _|  | d ¡}|j}| jg d¢dd�}t ||¡ d S )N)r   rS   r"   rH   rÜ  rS   )r   r"   rH   r³   )r   rÖ   r1   Ú_obj_with_exclusionsr&  r7   r8   )r<   r=   r   r   r   r   r   Ú*test_obj_with_exclusions_duplicate_columns  s   
r§  c                 C   sž   dddœdddœg}t |ƒ}|jdddd�}| r/|jd	d
�}t ddgdgd�}t ||¡ d S tjtdd�� |j| d
� W d   ƒ d S 1 sHw   Y  d S )NrŠ   r‹   rì   ÚcarÚdarrí   F)rÃ   rá  Tr4  ri  z(could not convert string to float: 'bar'rQ   )r   r1   r4   r7   r8   rw   rx   r¡  )r5  Údicts_non_numericr<   r^  r   Úexpected_dfr   r   r   Ú'test_groupby_numeric_only_std_no_result  s   ÿ"ýr¬  c                  C   sò   t g d¢g d¢dœƒ} tj| d t ddd¡d�}| j|d	gd
d�d  d¡}ttdddd�tdddd�tdddd�tdddd�gdd�}g d¢}t	j
||gdd	gd�}tt dtjdtjdtjdtjtjdtjtjg¡|dd�}t ||¡ d S )N)çš™™™™™¹?çš™™™™™É?ç333333Ó?çš™™™™™Ù¿ç      à?)rí   rî   rí   r   rí   )rL   ÚwrL   r   rS   r!   rÁ   r²  Frc  re   gD‹lçû©Ù¿r­  r�  )Úclosedr®  r¯  r±  T)rÓ  r  r\  r°  r.  )r   r+   Úqcutr5   Úlinspacer1   rs   r   r   r   r%  r   rš   r°   r7   rt   )r<   Úqqr   Úcategorical_index_level_1Úindex_level_2rc  r   r   r   r   Ú/test_grouping_with_categorical_interval_columns$  sF   üù	ÿôÿîr¹  Úbug_varc                 C   sV   t d| | | tjgiƒ}| dd„ ¡}|jdd�}t | | | d gdgd�}t ||¡ d S )Nr   c                 S   rV  rU   r   rK   r   r   r   rM   Q  rW  z;test_groupby_sum_on_nan_should_return_nan.<locals>.<lambda>rS   )Ú	min_countri  )r   r5   r°   r1   rW   r7   r8   )rº  r<   r^  r   r«  r   r   r   Ú)test_groupby_sum_on_nan_should_return_nanM  s
   r¼  )r€  ÚcorrÚcummaxÚcumminr‹  r  ÚrankrÇ   r  rü  r'  r'  rÇ  r“   r  r   Ú
pct_changec                 C   sd   t dt| ƒd�}|| _|  dg¡dg }| dg  | d ¡}t||ƒƒ }t||ƒƒ }t ||¡ d S )NÚ2014r   r   r&   )r   ro   r)   r1   r  r7   r8   )r<   rÆ  ÚrngrÊ   Úg_exprØ   rg  r   r   r   Ú#test_groupby_selection_with_methodsX  s   rÅ  c                 C   sT  t dt| ƒd�}d| j_|| _|  dg¡dg }| dg  | d ¡}d}tjt|d�� t 	| 
d¡| 
d¡¡ W d   ƒ n1 sBw   Y  d	}tjt|d�� t 	|j|j¡ W d   ƒ n1 scw   Y  t 	| d
d„ ¡| d
d„ ¡¡ t 	| d¡ ¡ | d¡ ¡ ¡ t 	| d¡ ¡ | d¡ ¡ ¡ t 	| dd„ ¡| dd„ ¡¡ d S )NrÂ  r   rŠ   r   r&   r  rQ   r   z%DataFrameGroupBy.dtypes is deprecatedc                 S   r  rU   rV   rK   r   r   r   rM   Ž  rN   z6test_groupby_selection_other_methods.<locals>.<lambda>r�   c                 S   s   t | ƒdkS rJ   r�  rK   r   r   r   rM   ”  rX   )r   ro   rÖ   rd   r)   r1   r7   rp   rq   r8   r  rœ   ru   Úresamplere   rã  rž  )r<   rÃ  rÊ   rÄ  r  r~   r   r   r   Ú$test_groupby_selection_other_methods~  s&   ÿÿ   ÿrÇ  c                 C   s€   t g d¢ƒ | ¡}tg d¢g d¢|dœƒ}tddd| d�}t|g d¢g d¢d	œƒ}| td
dd�¡}| ¡  ¡ }t 	||¡ d S )N)z2016-08-31 22:08:12.000z2016-08-31 22:09:12.200z2016-08-31 22:20:12.400)rñ   rñ   r¡  )ÚquantÚquant2Útime2z2016-08-31 22:08:00r}  Ú1min)r    rà   Úunit)rS   rS   r   r   r   r   r   r   r   r   r   r   rS   )rÊ  rÈ  rÉ  rÊ  )r   rà   )
r   Úas_unitr   r   r1   r	   r€  r†  r7   r8   )rÌ  Úidx2Ú	test_datarÊ  Úexpected_outputr=   r   r   r   r   Útest_groupby_with_Time_Grouper˜  s$   ÿúÿýÿrÑ  c                  C   sP   t g d¢tddd�dd�} |  | ¡ ¡ }t ddgdd	�}d|j_t ||¡ d S )
Nrö  z
2022-01-01rH   r   Újanr.  r"   rS   rj  )r   r   r1   r€  r)   rd   r7   rt   rE  r   r   r   Ú1test_groupby_series_with_datetimeindex_month_name´  s
   rÓ  Útest_serieszkwarg, value, name, warn)ru  rí   rS   Nru  r‚  )r   r   rS   Nc           
      C   sÐ   t dg d¢itg d¢dd�d�}| r|d }|jdi ||i¤Ž}d}tj||d�� | |¡}W d   ƒ n1 s9w   Y  | rPtd	d
gtddgdd�dd�}	nt dd	d
gitddgdd�d�}	t ||	¡ d S )Nrî   rq  rp  rí   rj  r(   z&you will need to pass a length-1 tuplerQ   rH   rÜ   rS   r.  r   )r   r
   r1   r7   rp   rm  r   rÔ  )
rÔ  Úkwargr‘   rd   rÒ   rr  r=   r~   r   r   r   r   r   Ú$test_depr_get_group_len_1_list_likes½  s    ÿ  rÖ  c                  C   sJ   t ttjgƒdgdœƒ} | jddgddd� ¡ }tdgƒ}t ||¡ d S )NrS   rì   rí   rî   F)r{  rÉ  r   )	r   r   r5   r°   r1   r�  r   r7   rt   rn  r   r   r   Útest_groupby_ngroup_with_nanÙ  s   
r×  c                  C   s˜   t g d¢g d¢g d¢g d¢g d¢dœƒ} tjtdd�� | jd	g d
¢d�}W d   ƒ n1 s/w   Y  | d	¡}t g d¢g d¢dœƒ}t ||¡ d S )N)r   rH   r"   rH   )rÜ   rS   r9  rY   )rH   r�   r"   r`   )rS   r}  r9  r+  )éüÿÿÿr!   r9  iùÿÿÿ)rF  rG  Úcol3Úcol4Úcol5Ú
deprecatedrQ   rS   )rS   r"   rH   r"   rS   )r´   ru  )rF  rÛ  )r   r7   rp   rq   r1   rm  r8   rž  r   r   r   Útest_get_group_axis_1á  s$   ûÿ	ÿ
þÿrÝ  c                  C   s`   t dddddtjtjgig d¢d�} | jdd	� ¡ }t dg d
¢ig d¢d�}tj||dd� d S )Nrí   rS   r"   rH   rÜ   rO  r(   r   rº  )rS   r"   rH   rÜ   r"   rH   Fr÷   )r   r5   r°   r1   r  r7   r8   rn  r   r   r   Ú(test_groupby_ffill_with_duplicated_indexø  s   $rÞ  c                 C   sŒ   t tjtƒrJ ‚ttdƒtdƒd d gtdƒtdƒtdƒtdƒgdœƒ}|jddd	�}| r0|d
 }|jj}t	tdƒd gdd�}t
 ||¡ d S )NrS   r"   rH   rÜ   r!   )r   r‘   r   F)r{  r‘   rj  )rQ  ÚdecimalÚInvalidOperationrY  r   r   r1   r4  Úresult_indexr
   r7   r¤  )rÔ  r<   r=   r   r   r   r   r   Útest_decimal_na_sort  s   þÿrâ  )Èr   rß  r   rW  Únumpyr5   rw   Úpandas.errorsr   r   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandas.core.dtypes.commonr   Úpandasr+   r   r   r	   r
   r   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr7   Úpandas.core.arraysr   Úpandas.core.commonÚcoreÚcommonrP  ÚmarkÚfilterwarningsÚ
pytestmarkr   rA   Úparametrizer‚   rˆ   rž   r²   rÔ   rÚ   rê   rð   rõ   rÿ   r  r  r-  r3  r8  rH  rI  rS  rZ  rh  ro  rs  rw  rŽ  r”  r–  r™  r�  rŸ  r¢  r¥  r§  rª  r­  r´  r¶  r¸  r¼  r½  rÃ  rÅ  rÒ  rÖ  rÙ  rÝ  rã  ré  rñ  rò  r  r  r  r  r  r  r  r  r  r   r$  r&  r)  r-  r0  r9  r;  rE  rG  rU  rX  r_  ra  re  rh  rl  rn  ro  ru  r„  rˆ  r™  r   r¤  r³  r»  r¡  rš   rÛ  rÝ  rÞ  rß  ræ  ré  rë  rò  rô  rû  r	  r
  r  r  r  r  r!  r$  r%  r&  r(  ÚparamÚ
skip_if_nor-  r0  r9  r<  r@  rA  rD  rF  rG  rL  rV  rW  r_  re  ro  ré   r{  r|  r~  rƒ  r‡  rŠ  rŒ  r�  r•  r�  r–  r›  rž  r   r¥  r§  r¬  r¹  r¼  rÅ  rÇ  rÑ  rÓ  rq   rÖ  r×  rÝ  rÞ  râ  r   r   r   r   Ú<module>   s�   8
AH5
ÿ
=(07
 
C"	
þ

þ	
 	-

?-	
 	1þÿõñÿ{	
úÿþúÿþúÿþåþ,

-)þ









ôþ	þþ
&ÿ	þþ
ÿýýúþ	ÿ
)
þ	úþ	