
    Pi                       d dl m Z  d dlZd dl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 d dlmZ d dlmZ d dlmZ ej        fdZi dd	d
ddd dej        dej        dej        dej        dej        dej        dej        dej        dej        dej        dd dddej        dej        d ej        ej        ej        d ej        dZd Zd Zd Zd  Zd! Zd" Zd# Zd$ Z d% Z!d& Z"ej#        $                    d'd	dg          d(             Z%d) Z&d* Z'd+ Z(d, Z)d- Z*d. Z+d/ Z,d0 Z-ej#        $                    d1d2g d3 e	g d4d25          fd2d6gg d7 e	g d4d25           eg d8          gfd2d9gg d: e	g d4d25           e	g d4d25          gfg          ej#        $                    d;d	dg          d<                         Z.d= Z/d> Z0d? Z1ej#        $                    d'd	dg          d@             Z2dA Z3dB Z4dC Z5dD Z6dE Z7ej#        $                    dFdGg e e8dH                    d dIgddJgdKf e e8dH                    9                    dL           dJgd dgdKf e e8dM                    d dIgddJgdKfg          dN             Z:dO Z;dP Z<dQ Z=ej#        $                    dRdSdTg          dU             Z>ej#        $                    dVddWdgfddXdYgfddXdgfddWdYgfg          dZ             Z?d[ Z@d\ ZAd] ZBd^ ZCej#        $                    d'd	dg          d_             ZDej#        $                    d'd	dg          d`             ZEda ZFdb ZGdc ZHej#        $                    ddd	 e ejI         eg dedfg          g dhgd2d6gi          g d4djk          fd e
 eg dedfg          g dhg d4dl          fg          dm             ZJej#        $                    dndej        ejK        g          do             ZLejM        dp             ZNej#        $                    dqdrdsg          dt             ZOej#        $                    dqdrdsg          ej#        $                    duddg          dv                         ZPej#        $                    dwd	 ejI         edxgdHz  dygdHz  z   dfdz{           eg d|dfd}{           eddgdHz            g          g d~fd ejQ         e	dxdygd           e	g dd           eddg          gg di          dJdJdHdHej        ej        ddej        ej        dIdIgfd ejQ         e	dxdygd           e	g dd           eddg          gg di          dJdJdHdHej        ej        ddej        ej        dIdIgfg          d             ZRd ZSd ZTd ZUd ZVd ZWd ZXej#        $                    duddg          d             ZYd ZZej#        $                    dej[        g defej\        g dhfg          d             Z]d Z^ej#        $                    dddg          d             Z_d Z`d Zad Zbd Zcd Zdej#        $                    dddg          deedueffd            Zgej#        $                    dddg          deedueffd            Zhd Ziej#        $                    dddg          d             Zjd Zkd Zld Zmej#        $                    dg d          ej#        $                    d'd	dg          d                         Znej#        $                    dddg          ej#        $                    d'd	dg          d                         Zoej#        $                    dg d          ej#        $                    dddg          ej#        $                    d'd	dg          d                                     Zpej#        $                    dg d          ej#        $                    dg d          ej#        $                    d'd	dg          d                                     Zqej#        $                    dg d          d             Zrej#        $                    d;d	dg          ej#        $                    ddgdd9gg          d                         ZsdS )    )datetimeN)Pandas4Warning)CategoricalCategoricalIndex	DataFrameIndex
MultiIndexSeriesqcut)SeriesGroupBy)get_groupby_method_argsc                 v   d }t          j        t          ||          |          }t          |t                    rUi }| j        D ](}| |                             |||                   ||<   )t          ||                                          S |                     ||                                          S )zpReindex to a cartesian production for the groupers,
    preserving the nature (Categorical) of each grouper
    c                     t          | t          t          f          rB| j        }t          j        t          j        t          |                    || j                  } | S )N
categoriesordered)	
isinstancer   r   r   
from_codesnparangelenr   )ar   s     y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/groupby/test_categorical.pyfz)cartesian_product_for_groupers.<locals>.f   sX    a*K899 	J&	#j//**z19  A     names
fill_valueindex)	r	   from_productmapr   dictcolumnsreindexr   
sort_index)resultargsr   r   r   r!   rescols           r   cartesian_product_for_groupersr,      s    
   #C4LL>>>E*d## 8 > 	N 	NCc{**5Z_*MMCHHE***55777>>%J>77BBDDDr   allTanyFcountcorrwithfirstidxmaxidxminlastmaxmeanmedianminnthnuniqueprod   quantilesem)sizeskewkurtstdsumvarc                     t          | j        d          }d }|                     |d          j                            |          }|j        j        d         dk    sJ d S )N   c                     |                                  |                                 |                                 |                                 dS )Nr8   r5   r/   r6   rH   )groups    r   	get_statsz2test_apply_use_categorical_name.<locals>.get_statsT   s=    99;;99;;[[]]JJLL	
 
 	
r   Fobservedr   C)r   rM   groupbyDapplyr!   r   )dfcatsrJ   r(   s       r   test_apply_use_categorical_namerS   Q   si    a==D
 
 
 ZZuZ--/55i@@F<a C''''''r   c                  V   t          g dg dd          } t          g d| d          }t          t          d          dd	          }t          d
dddt          j        gi|          }|                    dd                                          }t          j	        ||           d S )N	r   r   r   brV   rV   crW   rW   r   rV   rW   dTr   	r<   r<   r<      r[   r[      rF      r   rV   abcdrV   namer   r   r<   r[   rF   r    FrK   )
r   r   r   listr   nanrN   r6   tmassert_frame_equal)rR   data	exp_indexexpectedr(   s        r   
test_basicri   `   s    555'''  D
 666TBBCCD fCFFFI#1a01CCCH\\#\..3355F&(+++++r   c                  x   t          g dg dd          } t          g dg dd          }t          | |g dd          }|                    d	d
          }t          g dd	d          }t          dt	          g d|          i          }|                    d          }t          j        ||           d S )Nr   r   rV   rV   r   rV   zTr   rW   rY   rW   rY   rW   rY   yr<   r[   r\   rF   ABvaluesrs   FrK   r`   ru   )r\      r   r    numeric_only)r   r   rN   r   r
   rC   rd   re   )cat1cat2rQ   gbexp_idxrh   r(   s          r   test_basic_single_grouperr}   n   s    +++QUVVVD+++QUVVVD	DLLLAA	B	BB	C%	(	(BS$GGGG(F999G$D$D$DEFFHVVV&&F&(+++++r   c                 z   t          ddgddgddggddg          }t          |j                  |d<   |                    dgd	          }|                    d
           }t          j        ||dg                    |                    d          }|j        ddg         }t          j        ||           d }|	                    |          }|dg         j        ddg         }t          ddgd          |_        | rdnt          }|d                             |          |d<   t          j        ||           d S )Nr<   zJohn P. Doer[   z	Jane Dove	person_idperson_namer%   FrK   c                     | S N xs    r   <lambda>z#test_basic_string.<locals>.<lambda>   s    1 r   r   c                 B    |                      d          j        d         S )Nr   r   )drop_duplicatesilocr   s    r   r   ztest_basic_string.<locals>.f   s      //4Q77r   ra   str)r   r   r   rN   	transformrd   re   r   r   rP   r   r!   objectastype)using_infer_stringr   gr(   rh   r   dtypes          r   test_basic_stringr   z   sZ   
]	a-=/ABm,	 	 	A #1=11Am			;-%	00A[[%%F&!]O"4555}--Fvq!f~H&(+++8 8 8 WWQZZF-!&1v.HAq6444HN'3EEVE&}5<<UCCH]&(+++++r   c                     t          dg di          } t          j        | j        g d          }| j                            |d                              t                    }t          j        || d                    t          j        | j                            |d                              d           | d                    |                     |d                              t                    }| dg         }t          j	        ||           |                     |d          }|                    d           }t          j	        || dg                    |                    d	           }|                    t                    }|                    t          j        j                  }|                    d
           }t          j	        || dg         d           t          j	        || dg         d           t          j	        || dg                    t          j	        || dg                    t          j        | j                            |d                              t          j                  | d                    t          j	        |                     |d                              t          j                  |            d S )Nr   )r]         )r   
         (   binsFrK   c                 *    t          j        |           S r   r   rC   xss    r   r   z&test_basic_monotonic.<locals>.<lambda>       RVBZZ r   c                 .    t          j        | d          S Nr   axisr   r5   r   s    r   r   z&test_basic_monotonic.<locals>.<lambda>   s    bfRa&8&8&8 r   c                 .    t          j        | d          S r   r   r   s    r   r   z&test_basic_monotonic.<locals>.<lambda>   s    rvbq'9'9'9 r   c                 @    t           j                            |           S r   )r   maximumreducer   s    r   r   z&test_basic_monotonic.<locals>.<lambda>   s    rz'8'8'<'< r   )check_dtype)r   pdcutr   rN   r   rC   rd   assert_series_equalre   r5   r   r   r   filterr-   )	rQ   rW   r(   rh   gbcresult2result3result4result5s	            r   test_basic_monotonicr      sl   	C%	&	&B
rt---...AT\\!e\,,66s;;F62c7+++
Q''112G2GHH"S'   ZZEZ**44S99F3%yH&(+++
**Q*
'
'C]]8899F&"cU),,,mm99::GmmC  GmmBJ-..Gmm<<==G'2se9%@@@@'2se9%@@@@'2se9---'2se9--- 24<<E<::AA"&II2c7SSS"**Q*77>>rvFFKKKKKr   c                     t          dg di          } t          j        | j        g d          }| j                            |d                              t                    }t          j        || d                    t          j        | j                            |d                              d           | d                    |                     |d                              t                    }| dg         }t          j	        ||           t          j	        |                     |d                              d           | dg                    d S )	Nr   )r]   r   r   )ir   r   r   r   r   r   FrK   c                 *    t          j        |           S r   r   r   s    r   r   z*test_basic_non_monotonic.<locals>.<lambda>   r   r   c                 *    t          j        |           S r   r   r   s    r   r   z*test_basic_non_monotonic.<locals>.<lambda>   s    26":: r   )
r   r   r   r   rN   r   rC   rd   r   re   )rQ   rW   r(   rh   s       r   test_basic_non_monotonicr      sB   	C)	*	*B
rt222333AT\\!e\,,66s;;F62c7+++
Q''112G2GHH"S'   ZZEZ**44S99F3%yH&(+++


1u
%%//0E0EFFC5	    r   c            	         t          dg di          } t          j        | j        g dt	          t          d                              }|                     |d                              t                    }t          |j
        j        |j
        j                  }t          g d|	          }d|j        _        t!          j        ||           d S )
Nr   )r<   r   r   r   r   r<   r[   r\   rF   r_   )labelsFrK   r   r    )r   r   r   r   r   rb   rN   rP   r   r   ru   r   r   r
   r!   ra   rd   r   )rQ   rW   r(   rg   rh   s        r   test_basic_cut_groupingr      s    	C&	'	'B
rt___[f-F-FGGGAZZEZ**0055F !4ah>NOOOIlll)444HHN68,,,,,r   c                     g d} t           j                            d                              ddd          }t	          j        || d          }t          t           j                            d                              d	                    }|                    |d
          	                                }|                    t          j
        |          d
          	                                }t          | |j        d          }|                    |          }t          j        ||           |                    |d
          }|                                }|j                                        }	t          j
        |                              |	          }
|                    |	          }t	          |
dg d          }|                    |d
d
                                          }t          j        ||           t	          j        t          j        d                              d          | d          }t          |          }t          j        |                                j                            d          |           t5          g ddz            }t          j        |                                j                            d          |           d S )Nfoobarbazquxr[   r   rF   r   r?   Tr   r   rF   FrK   r   )r   r   sortrL      r/   r6   rB   r8   z25%z50%z75%r5   r<   )r   randomdefault_rngintegersr   r   r   standard_normalrN   r6   asarrayr   r   r&   rd   re   describecodesargsorttaker   repeatassert_index_equalstackr!   get_level_valuesr   )levelsr   rR   rf   r(   rh   r|   groupeddesc_resultidx
ord_labelsord_dataexp_catsexpcexps                  r   test_more_basicr      s~   )))FI!!!$$--a-<<E!%>>>DRY**1--==gFFGGD\\$\//4466F||BJt,,u|==BBDDHv$/4PPPG((H&(+++ll4%l00G""$$K
*



CD!!&&s++Jyy~~HD-I-I-I  H uuEENNPPH+x000 !")A,,"5"5a"8"8&$OOOD
4
 
 C+++--3DDQGGMMM
KKKaO
P
PC+++--3DDQGGMMMMMr   c           
      8   t          t          j        ddd          t          t	          ddg          t          d          gdgdz  dgdz  z   t          d          gd	d
g                    }|                    d	g|           }t          t          j        ddd          t          t	          ddg          t          d          gdgdz  t          d          gd	d
g                    }|                    d          }t          j	        ||           d S )Nr[      r   rV   r   r   r]   r<   Index1Index2)r   r   r   rf   r!   levelrL      )r   )
r   r   r   r	   r   rangerN   	get_grouprd   re   )rL   rQ   r   rh   r(   s        r   test_level_get_groupr      s.   	Yq"a  $c3Z00%))<37aS1W$eBii0X&
 
 

 
 
B 	

(h
77A Yq"a  $c3Z00%((;37E!HH%X&
 
 
  H [[  F&(+++++r   c                     t          dgdz  dgdz  z   g ddz  t          j        d          d          } t          | j        g dd	
          | _        |                     d          d                                         }|                    dd	          }g d}t          |g dd	
          }g dt          |          g}t          j
        |ddg          }t          dgdz  |d          }t          j        ||           d S )Nrs      rt   )highmedlowrF   g      (@)rI   doseoutcomes)r   r   r   Tr   rI   r   r   )r   sort_remaining)r   r   r   r   r   r   )rs   rs   rs   rt   rt   rt   r   r[   r/   r!   ra   )r   r   r   r   r   rN   value_countsr'   r   r	   from_arraysr
   rd   r   rQ   r(   r!   rh   s       r   (test_sorting_with_different_categoricalsr     s/   	UQY#****Q.	$	
 	

 
B "'.D.D.DdSSSBGZZ  (5577FQt<<F888E*@*@*@$OOOE+++-=e-D-DEE"5&0ABBBEqcAgU999H68,,,,,r   r   c                 8   t          t          d          |           }t          t          d          ddg|           }t          j        t	          |                    }t          |||d          }|                    dd	gd
          }t          j        ||gdd	g          }t          g d|dg          }|	                    d           }t          j        ||           |                                }t          j        ||           |                    t          j                  }t          j        ||           t          j        ||gdd	g          }t          d|          }|	                    d           }t          j        ||           d S )Nabcr   aaar   rV   r   )missingdenseru   r   r   TrK   r   )r   r<          @ru   )r!   r%   c                 .    t          j        | d          S r   )r   r6   r   s    r   r   ztest_apply.<locals>.<lambda>:  s    RWQQ%7%7%7 r   r<   r    c                     dS Nr<   r   r   s    r   r   ztest_apply.<locals>.<lambda>F  s    Q r   )r   rb   r   r   r   r   rN   r	   r   rP   rd   re   r6   aggr
   r   )	r   r   r   ru   rQ   r   r   rh   r(   s	            r   
test_applyr  *  s    UW555E $u++3*gNNNGYs5zz""F	w&II	J	JBjj)W-j==G 
 '5!1)W9M
N
N
NCC(DDDH]]7788F&(+++\\^^F&(+++[[!!F&(+++ 
 '5!1)W9M
N
N
NCas###H]];;''F68,,,,,r   c                 T   t          g dg dd          }t          g dg dd          }t          ||g dd          }d	d
gdz  |d<   |                    g d|           }t          j        ||d	d
gdz  gg d          }t          dt          g d|          i                                          }|                                }| s%t          |||d	d
ggt          d          d          }t          j        ||           |                    ddg|           }t          j        ||gddg          }t          g dg dd|          }|                                }| s)t          |||gt          d          |rdddnd          }t          j        ||           d S )Nrk   rl   Tr   rn   ro   rq   rr   r   r   r[   rM   )rs   rt   rM   rK   r   ru   r    ABCr   r   rs   rt   )r   r   r   r   )ru   rM   AB )r   r   rN   r	   r   r
   r'   rC   r,   rb   rd   re   )	rL   r   ry   rz   rQ   r{   rg   rh   r(   s	            r   test_observedr
  J  s    +++QUVVVD+++QUVVVD	DLLLAA	B	BBenq BsG 
OOOh	7	7B&	teU^a'(  I (F<<<y$I$I$IJKKVVXXHVVXXF 
1tTE5>2DKKA
 
 
 &(+++	S#J	2	2B&d|C:FFFI<<&B&B&BCC9  H VVXXF 
14LJJ1CJ!"---	
 
 
 &(+++++r   c                    t          g dg dd          g dg dd}t          |          }|                    d| 	          }|                                }t	          t          d
          dt          d          d          }t          ddgddgd|          }| sBt	          t          d          dt          d          d          }|                    |          }t          j        ||           d S )Nr   rV   r   rV   r   rV   rW   Tr   r<   r<   r[   r[   r   r   r   r   catintsvalr  rK   abr   )ra   r   r   g      ?      4@r   )r  r  r    )	r   r   rN   r6   r   rb   r&   rd   re   )rL   rY   rQ   groups_single_keyr(   rg   rh   r!   s           r   test_observed_single_columnr  v  s%       ___d
 
 
 	 	A 
1B

58
<<##%%F T

4;;  I 3*dBZ@@	RRRH + KKeUT
 
 
 ##E**&(+++++r   c                 N   t          g dg dd          g dg dd}t          |          }|                    dd	g| 
          }|                    d          }t          g dt          g dg dd          g dd                              dd	g          }| s!t          ||j        j        ddggdd	g          }t          j	        ||           dD ]N}|\  }}|
                    |          }||j        |k    |j        |k    z           }t          j	        ||           Od S )Nr  r  Tr   r  r  r  r  r  rK   r6   )      $@g      >@r  g      D@rk   r<   r[   r<   r[   )r  r  r  r<   r[   ))r   r<   )rV   r[   )rV   r<   )r   r[   )r   r   rN   r  	set_indexr,   r  ru   rd   re   r   r  )	rL   rY   rQ   groups_double_keyr(   rh   keyrW   is	            r   test_observed_two_columnsr    s       ___d
 
 
 	 	A 
1B

E6?X
FF""6**F+++$$$$   !LL	
 	
  i     
1rv}q!f-v
 
 &(+++ 8 0 01",,S11rv{rw!|45
fh////	0 0r   c                    g dg dg dd}t          |          }t          j        |d         t          j        ddd                    }||d	<   |                    d	d
gd|           }|                    d          }|                    d	d
gd|           }|                    d                                          }t          j	        ||           d S )N)r   r   rF   r   rF   r<   r<   r   r   r   r   2   <   F   )rY   rW   er   r   rY   rW   r   r   r   r   r   r   r\   r   r   Fas_indexrL   r6   T)
r   r   r   r   linspacerN   r  reset_indexrd   re   )rL   rY   rQ   r  groupsr(   groups2rh   s           r   test_observed_with_as_indexr-    s     &%%+++222	 	A
 
1B
&EBK2q11
2
2CBwKZZ%(58ZLLFZZFjj'5)D8jLLG{{6""..00H&(+++++r   c                    g dg dg dd}t          |          }t          j        |d         g d          }d|_        |                    |dg| 	          }t          j        |g dgddg
          }t          g dg dd|          }| st          ||j        g dgddg          }|	                    d          }t          j        ||           d S )N)r\   r\   rF   r]   rq   )r   d      "   )C1C2C3r2  )r<   r[   r\   r   r  r3  rK   r   )      @r5  g      @g      @)r  g      Y@g      i@g      A@)r2  r4  r    r6   )r   r   r   ra   rN   r	   r   r,   ru   r  rd   re   )rL   rY   rQ   ru   r  r   rh   r(   s           r   test_observed_codes_remapr6    s   ||<<<7I7I7IJJA	1BVBtHlll++FFK

FD>H
EE

 &,,,!7t}
M
M
MC###+E+E+EFFc  H  
1v}lll3eT]
 
 ""6**F&(+++++r   c            	         t          t          j                            d                              ddd          t          j                            d                              ddd          t          j                            d                              ddd          dd          } | j                            t                                        d          | d	<   |                     g d
d          }|	                                }|j
        j        d                                         | j                                        k    sJ |j
        j        d                                         | j                                        k    sJ |j
        j        d                                         | j                                        k    sJ d S )Nr[   r      i0u  r   '  )r  int_idother_idr   categoryr  )r  r:  r;  TrK   r<   )r   r   r   r   r   r  r   r   rN   r/   r!   r   r:   r:  r;  )rQ   r   r(   s      r   test_observed_perfr=    s    
9((++44Q%4HHi++A..773U7KK	--a0099!U9OO		
 	

 
B c""))*55BuIjj666jFFG]]__F<q!))++rv~~/?/?????<q!))++ry/@/@/B/BBBBB<q!))++r{/B/B/D/DDDDDDDr   c                 |   t          g dg d          }t          |g dd          }|                    d|           }|j        }| r't	          dd	gd
          t	          dgd
          d}n6t	          dd	gd
          t	          g d
          t	          dgd
          d}t          j        ||           d S )N)r   rW   r   r  r   r<   r[   r\   r  valsr  rK   r   r[   int64r   r<   )r   rW   )r   r   rN   r+  r   rd   assert_dict_equal)rL   r  rQ   r   r(   rh   s         r   test_observed_groupsrF    s     ooo///
B
B
BC	3			22	3	3B


58
,,AXF 
1vW555E1#W<U<U<UVV 1vW---r)))s'***
 
 *****r   c           	         t          dt          dt          j        dgt	          d                    it	          d                    }|                    d||           }|j        }dt          dd	g          i}| s|t          j        t          d
g          iz  }|s"|t          g           t          g           dz  }t          j	        ||           d S )Nr  r   adbr?  xyzr    rL   dropnar   rm   rp   )rV   rY   )
r   r   r   rc   rb   rN   r+  r   rd   rE  )rK  rL   rQ   r   r(   rh   s         r   test_groups_na_categoryrL    s    		S"&#.4;;GGGH5kk
 
 
B 	

58F
;;AXFUC:&&'H +RVUC5\\** 5%))%))444*****r   z,keys, expected_values, expected_index_levelsr   )r   	   r   r@  r   rV   )	rv   r   r   r   r   rM  r   r   r   rF   r]   r   a2)	r   r   r   r   rM  r   r   r   r   test_seriesc                    t          t          g dg d          t          g dg d          g dg dd                              ddg          }d	| vr|                    d	
          }|                    | d          }|r|d         }|                                }t          |           dk    r|}ng ddg dz  g}t          |||           }t          d|i|          }	|r|	d         }	t          j	        ||	           d S )Nr<   r<   r[   r@  r?  rN  )rv   r   rM  )r   rO  rV   rW   r   rO  rV   r   FrK   rW   r<   	r   r   r   r<   r<   r<   r[   r[   r[   r\   r   r<   r[   )r   r   r    )
r   r   r  droprN   rC   r   r	   rd   assert_equal)
keysexpected_valuesexpected_index_levelsrP  rQ   r{   r(   r!   r   rh   s
             r   test_unobserved_in_indexrZ    sO   , 
YYY999===iiiIII>>>		
 	

 
 id  $WWSW!!	D5	)	)B WVVXXF
4yyA~~%,,,a)))m<!
 
 

 #/u===H !C=OFH%%%%%r   c                 j   t          t          dt          j        dgg d          g dd          }|                    d|           }|j        }| rdt          dd	gd
          i}n5t          dd	gd
          t          g d
          t          g d
          d}t          j        ||           d S )Nr   )r   rV   rY   r?  r@  rA  r  rK   r   r[   rC  rD  )	r   r   r   rc   rN   r+  r   rd   rE  )rL   rQ   r   r(   rh   s        r   test_observed_groups_with_nanr\  M  s    	RVS1oooNNNII	
 	

 
B 	

58
,,AXF 
1vW5556 1vW---r)))r)))
 

 *****r   c                  R   t          dt          j        t          j        gg d          } t          g d          }t	          | |d          }|                    dd          d	                             d
          }|d	         j        d
g         }t          j	        ||           d S )Nr   r  r?  r@  )r  serr  FrK   r^  r   )
r   r   rc   r
   r   rN   r9   r   rd   r   )r  r^  rQ   r(   rh   s        r   test_observed_nthr_  b  s    
sBFBF+
H
H
HC


C	3s++	,	,BZZZ..u599!<<F%y~qc"H68,,,,,r   c                 
   t          t          j        dt          j        dgg d          }t          g d          }t	          ||d          }|                    d|                                                                           }| r&t	          t          dgg d          dgd          }n<t	          t          g dg d          dt          j        t          j        gd          }t          j	        ||           d S )	Nr   r  r?  rq   )s1s2ra  rK   r[   )
r   r   rc   r
   r   rN   r1   r*  rd   re   )rL   ra  rb  rQ   r(   rh   s         r   #test_dataframe_categorical_with_nanrc  m  s   	bfc263/OOO	L	L	LB			B	"B''	(	(BZZxZ006688DDFFF 

uAAA!MM
 
 !///oooNNN"&"&) 
 
 &(+++++r   c                    t          g dg d|           }t          g d          }t          ||d          }|                    d||          d                             d          }t          |j        j        d	
          }t          |j                  }|sd||                                <   t          ||k              s$d|  d| d| d| }t          j
        |           d S d S )N)rY   r   rV   r   rY   rV   )r   rV   r   rY   r   )labelr  re  )rL   r   r  r1   r   rD  r   zDLabels and aggregation results not consistently sorted
for (ordered=z, observed=z, sort=z
)
Result:
)r   r
   r   rN   	aggregater!   arrayisnar-   pytestfail)	r   rL   r   re  r  rQ   r(   aggrmsgs	            r   0test_dataframe_categorical_ordered_observed_sortrm    s;    &&&---  E
 ///
0
0C	U3//	0	0B ZZ(Z>>uEOOPWXXF 6<%X666E&,D &%TYY[[u} !#! !08! !AE! !! ! 	
 	C r   c                     t          j        dd          } t          j                            d                              ddd          }t          j        || d	          }t          t          j                            d          	                    d
                    }|
                    |d                                          }|
                    t          j        |          d                                          }|                    |           }t          |j        |j        d          |_        t!          j        ||           |
                    |d          }|                                }|j                                        }|                    |          }	|                    |          }
|

                    |	d                                          }t!          j        ||           t!          j        |j        |j                   t!          j        |j                            d          |j                            d                     t          j        t          j        d                              d          | d	          }t          |          }t!          j        |                                j                            d          |           t7          g ddz            }t!          j        |                                j                            d          |           d S )Nz
2014-01-01rF   )periodsr[   r   r   r   Tr   r   FrK   r   r   r   r<   )r   
date_ranger   r   r   r   r   r   r   r   rN   r6   r   r&   r   r!   rd   re   r   r   r   r   r   r   r   r   r   r   )r   r   rR   rf   r(   rh   r   r   r   r   r   r   r   s                r   test_datetimerq    s   ]<333FI!!!$$--a-<<E!%>>>DRY**1--==gFFGGD\\$\//4466F||BJt,,u|==BBDDH''H%8>4  HN &(+++ll4%l00G""$$K
*



C3Jyy~~H
U;;DDFFH+x000++X^<<<**1--x~/N/Nq/Q/Q  
 !")A,,"5"5a"8"8&$OOOD
4
 
 C;,,..4EEaHH3OOO
KKKaO
P
PC;,,..4EEaHH3OOOOOr   c                  8   t           j                            d          } g d}|                     ddd          }t	          j        ||d          }t          t          j        t          j        d          d          	                    d	d          t          d
                    }||d<   |                    d                              dd                                          }|t          d
                                       |j        d                                          }t          t	          j        g d|d          d          |_        t#          j        ||           |                    dd                                          }|t          d
                                       |j        d                                          }t          t	          j        g d|d          d          |_        t#          j        ||           d S )Nr[   r   r   rF   r   r   Tr   r_   r   rR   Fr   rK   r   r<   r[   r\   r   )r   r   r   r   r   r   r   r   r   reshaperb   r  rN   rC   r   r   r!   rd   re   )sr   r   rR   rQ   r(   rh   s          r   test_categorical_indexrw    s   
	a  A)))FJJq!"J%%E!%>>>D	29RYr]]A..66r1==tF||	T	T	TBBvJ \\&!!))E)BBFFHHF$v,,''
U'CCGGIIH%|||VTBBB  HN &(+++ ZZZ//3355F$v,,''
U'CCGGIIH%|||VTBBB  HN &(+++++r   c                     t          g dg dd          } t          t          j                            d                              d          |           }|                    g dd	z                                            }t          j	        |
                                j        |            t          j        |
                                j        j        | j                   d S )
N)r   r   r   r   r   Tr   r[   )r   rF   r   rq   r]   )r   r   r   r   r   r   rN   r   rd   r   r   r%   assert_categorical_equalru   )rR   rQ   r(   s      r   !test_describe_categorical_columnsrz    s    $$$///  D
 
29((++;;GDDd	S	S	SBZZq())2244F&,,..0$777 6 =t{KKKKKr   c                     t          t          d          ddgdz  t          d          dz  d          } | d                             d	          | d<   |                     d
dgd          d                                                                         }|                                }t          ddgdd          }t          j
        |j        |           t          j        |j        j        |j                   |d         |d         z   }t          ddgt          ddgd
                    }t          j        ||           d S )Nr   rs   rt   r]   XYXXYr[   )r   mediumartistr}  r<  r~  FrK   r   r   ra   r   rF   XYr   r    )r   r   rb   r   rN   r/   unstackr   r   rd   r   r%   ry  ru   r
   r   r   )rQ   gcatr(   exp_columnsrh   s        r   test_unstack_categoricalr    s2   	BiiC:>T']]Q=NOO
 
B h<&&z22BxL::x*U:;;C@FFHHPPRRD]]__F"C:u8LLLK&.+666 5{7IJJJ#Yc"Fq!fE3*8$D$D$DEEEH68,,,,,r   c                  n   t          t          j        t          j        ddddddddg
          } t          j        |                                 j        d          }t          j        t          d          5  | 
                    |                                           d d d            d S # 1 swxY w Y   d S )Nr<   r[   r\   rF   z$Grouper and axis must be same lengthmatch)r
   r   rc   r   r   rK  ru   ri  raises
ValueErrorrN   r6   )seriesr   s     r   test_bins_unequal_lenr    s    RVRVQ1aAq!<==F6&--//(!,,D 
z)O	P	P	P $ $t!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   5(B**B.1B.r  rf   rF   r\   r[   rs   rt   c                     | dz   S r  r   )r   s    r   r   r     s
    S1W r   rv   c                 *   |                      t          t          d          d          d          }|                    t                    }t          |t	          |                                                    }t          j        ||           d S )NABBAr<  rD  FrK   r    )rN   r
   rb   rf  r   rW  rd   r   )r  rf   rN   r(   rh   s        r   test_categorical_seriesr    s{      nnVDLL
CCCenTTGt$$Fd"2499;;"?"?@@@H68,,,,,r   c                  x   t          t          g dg d          g dg dd                              ddgdd	
                                          } t          t          ddgj        j        j                  ddgddgdg d          }t          j        | |           fd}                    d|gdd	
                                          } t          t          ddgj        j        j                  ddgddgddgd          }t          j        | |           t          g dd          }                    d|gdd	
                                          } t          ddgddgddgd          }t          j        | |           ddg}t          t          ddgj        j        j                  ddgddgdg d          }dD ]d}t          t          d          |          _                            |dd	
                                          } t          j        | |           ed S )Nr<   r[   r[   r@  )r      r  )e   f   g   )r  rs   rt   r  rs   FTr'  r<   r[   r?  r   r  r     r   c                 "    j         | df         S )Nrs   )loc)rrQ   s    r   r   ztest_as_index.<locals>.<lambda>8  s    "&C. r   r   )r  level_1rs   rt   )r   rV   rV   r   r   rV   )Nr  rt   r   )r   r   rN   rC   r  r   rd   re   r
   r   rb   r!   )r(   rh   r   rv  group_columnsra   rQ   s         @r   test_as_indexr  #  s   	yyy)))44 	
 	

 
B ZZutZDDHHJJF1v"&*2GHHHbs	
 	

 "!!  H &(+++ 	!   AZZ
UTZBBFFHHF1v"&*2GHHHBxbs		
 	
 H &(+++ 	U+++AZZ
UTZBBFFHHF:bs	
 	
 H &(+++ CLM1v"&*2GHHHbs	
 	

 "!!  H ! 0 0e4000MEDIIMMOO
fh////	0 0r   c                     t          d          } t          dt          t          d          | d          i          }t          | | dd          }t          t          d          | dd          }t	          j        |                    ddd	                                          j        |           t	          j        |                    ddd	                                          j        |           d S )
Nr   rs   baTr   r  bacFr   	rb   r   r   r   rd   r   rN   r1   r!   r   rQ   r'   nosort_indexs       r   test_preserve_categoriesr  b  s    eJ 
CT$ZZJPTUUUV	W	WB!*j$SQQQJ#DKKTPSTTTL


3TE
2288::@*   


3UU
3399;;A<    r   c                     t          d          } t          dt          t          d          | d          i          }t          | | dd          }t          t          d          t          d          dd          }t	          j        |                    ddd	                                          j        |           t	          j        |                    ddd	                                          j        |           d S )
Nr   rs   r  Fr   r  r  Tr   r  r  s       r   &test_preserve_categories_ordered_falser  s  s    eJ	CT$ZZJPUVVVW	X	XB!*j%cRRRJ $DKKeeRUVVVL


3TE
2288::@*   


3UU
3399;;A<    r   r+   r2  r3  c                 @   t          g dg dt          t          d          t          d          d          t          t          d          t          d          d          d          }t          d	d
t          j        gddt          j        gt          t          d          t          d          d          t          t          d          t          d          d          d          }|                    | dd                              d          }|                    | dd                              d                                          }|                    |j	                  }t          j        ||           t          j        ||           d S )N)r<   r[   r<   r<   r[   )r      r      r1  abaabr  Fr   T)rs   rt   r2  r3  r   g      ?g      9@r  byr(  rL   rw   r   )r   r   rb   r   rc   rN   r6   r*  r&   r%   rd   re   )r+   rQ   exp_fullresult1r   rh   s         r   test_preserve_categorical_dtyper    s{    
 %%%d7mmUUSSSd7mmUTRRR		
 	

 
B sBF#bf%d5kkd5kk5QQQd5kkd5kk4PPP		
 	
 H jjC%%j@@EESWEXXG


cD5
99	4	 	 	 
 88H'8,,,'8,,,,,r   zfunc, valuessecondfourththirdc                    t          g dd          }t          g d|d          }|                    d          } t          ||                       }t          ddgt	          ||j        	          d                              d          }t          j        ||           |                    d          d
         } t          ||                       }|d
         }t          j	        ||           d S )N)r1   r  r  r  Tr   )rs  rs  r  )payloadr+   r  r  rs  rD  r+   )
r   r   rN   getattrr
   r   r  rd   re   r   )funcru   rW   rQ   r   r(   rh   sgbs           r   test_preserve_on_ordered_opsr    s    	:::DIIIA	///::	;	;B


9AWQFHVF!'%B%B%BCC i	  &(+++ **Y


&CWS$!!FH68,,,,,r   c                     t          t          j                            d                              d                    } t          j        g d          }t          j        |g dd          }|                     |d          	                                }|                     |d          	                                }t          |j        |j        |j        	          |_        t          j        ||           t          j        g d
          }t          j        |g dd          }|                     |d          	                                }|                     |d          	                                                    |j                  }t          |j        |j        |j        	          |_        t          j        ||           d S )Nr[   rM  rS  rT  Tr   FrK   r   )	r   r   r   r<   r<   r<   r\   r\   r\   rt  )r
   r   r   r   r   rg  r   r   rN   r6   r   r!   r   r   rd   r   r&   )rf   r   rR   r(   r   s        r   test_categorical_no_compressr    s   ")''**::1==>>DH00011E!%DAAAD\\$\//4466F
,,uu,
-
-
2
2
4
4C 	dot|  CI 63'''H00011E!%tDDDD\\$\//4466F
,,uu,
-
-
2
2
4
4
<
<T_
M
MC 	dot|  CI 63'''''r   c                  4   t          g dg dd          } t          g d| d          }|                    dd	                                          }|d
         j        }t          j        dddt
          j        g          }t          j	        ||           d S )NrU   rX   Tr   rZ   r^   rV   FrK   r   r<   r[   rF   )
r   r   rN   r6   ru   r   rg  rc   rd   assert_numpy_array_equal)rR   rf   r(   r   s       r   #test_categorical_no_compress_stringr    s    555'''  D
 666TBBCCD\\#\..3355FC[F
(Aq!RV$
%
%C,,,,,r   c                  :   t          d gdz  t          g d          d          } |                     d                                          d         }t	          t          g ddg          t	          g d	d
          d          }t          j        ||           d S )Nr\   )trainr  testr  rs   rt   r  r  r?  r   r   ra   r   )r   r   rN   r1   r
   rd   r   rQ   r(   rh   s      r    test_groupby_empty_with_categoryr    s     
$!+6P6P6P*Q*QRR	S	SBZZ__""$$S)FBFG#4555Rxc222  H
 68,,,,,r   c                  ~   t          dt          j                            d                              ddd          i          } d t          ddd          D             }t          ||          }|                     dgd	          } t          j	        | j
        t          dd
d          d|          | d<   |                     dgd          d                                         }|t          |j        d                    }t          |j        |j        j                  |_        t#          j        ||           d S )Nvaluer[   r   r9  r   c                 "    g | ]}| d |dz    S )z - i  r   ).0r  s     r   
<listcomp>ztest_sort.<locals>.<listcomp>  s*    ???Q  q3w  ???r   i  T)r  	ascendingi)  F)rightr   value_grouprK   c                 P    t          |                                 d                   S )Nr   )floatsplitr   s    r   r   ztest_sort.<locals>.<lambda>  s    eAGGIIaL.A.A r   )r  r   )r   r   r   r   r   r   r   sort_valuesr   r   r  rN   r/   sortedr!   r   ra   rd   r   )rQ   r   
cat_labelsr*   r   s        r   	test_sortr    s)    
GRY22155>>q%LLM	N	NB??%5#*>*>???FVV,,J	G9	5	5B
%5#&&eJ  B} **m_u*
5
5m
D
J
J
L
LC
fSY$A$ABBB
CC @@@CI3$$$$$r   c           
         t          g dg dg dg dg dg dg dgg d	          }t          |d
         |          |d
<   |                    d
| d                                          }| rddgddgddgddgg}g d}nddgddgddgddgg}g d}t          |ddgt	          |d
|                    }t          j        ||           d S )N)	(7.5, 10]r   r   )r  r   r   )(2.5, 5]r]   r   )(5, 7.5]r   r   )r  rF   r"  )(0, 2.5]r<   r#  )r  rv   r$  )r   r   r   r   r   r   Fr   r<   r#  r]   r   r   r   r   )r  r  r  r  )r  r  r  r  r   r   r`   r%   r!   )r   r   rN   r1   r   rd   re   )r   r   rQ   r(   data_valuesindex_valuesrh   s          r   
test_sort2r  	  sN   
 
!!!   	
 (''
 
 
B bk7;;;BwKZZdUZ;;AACCF I2wB!R2r(;HHHBx!R1b'Ar7;HHH|'7KKK  H &(+++++r   c                 \   t          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          gg dg ddg d	          }t          |d
         |          |d
<   | rQddgddgddgddgg}t          ddd          t          ddd          t          ddd          t          ddd          g}nPddgddgddgddgg}t          ddd          t          ddd          t          ddd          t          ddd          g}t          |ddgt          |d
|                    }|                    d
| d                                          }t          j        ||           d S )Ni  rv   r<   r[   r]   )r   r   r]   r   rF   r<   rv   r!  )dtr   r   r   r  r   r#  r   r   r   r   r   r   r`   r  Fr   )r   r   r   r   rN   r1   rd   re   )r   r   rQ   r  r  rh   r(   s          r   test_sort_datetimeliker  ,  s    
 q!$$q!$$q!$$q!$$q!$$q!$$q!$$ *))///	
 	
 %$$
 
 
B$ 2d8W555BtH 
2wB!R2r(;T1a  T1a  T1a  T1a  	
 Bx!R1b'Ar7;T1a  T1a  T1a  T1a  	
 |$HHH  H
 ZZ4%Z88>>@@F&(+++++r   c                  ~   t          t          g dg d          g dd          } t          g dd          }|                     dd	          j                                        }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          ddt          j
        g|d          }t          j        ||           |                     dd	          j                            d          }t          dt          j
        t          j
        g|d          }t          j        ||           d S )Nr   r   rV   r  r?  r<   r[   r<   r  rs   r   FrK   )r\   r<   r   rt   r   	min_countr<   r\   r[   )r   r   r   rN   rt   rC   r
   rd   r   r   rc   rQ   expected_idxr(   rh   s       r   test_empty_sumr  _  s   	///oooFFFYYYWW
 
B $OOO#>>>L ZZeZ,,.2244FiiiC888H68,,, ZZeZ,,.22Q2??FiiiC888H68,,, ZZeZ,,.22Q2??Fq!RVnl===H68,,, ZZeZ,,.22Q2??Fq"&"&)<cBBBH68,,,,,r   c                     t          t          g dg d          g dd          } t          g dd          }|                     dd	          j                                        }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          ddt          j
        g|d          }t          j        ||           d S )Nr  r  r?  r  r  rs   r   FrK   )r[   r<   r<   rt   r   r  r<   r[   )r   r   r   rN   rt   r;   r
   rd   r   r   rc   r  s       r   test_empty_prodr  {  sT   	///oooFFFYYYWW
 
B $OOO#>>>L ZZeZ,,.3355FiiiC888H68,,, ZZeZ,,.33a3@@FiiiC888H68,,, ZZeZ,,.33a3@@Fq!RVnl===H68,,,,,r   c                  J   t          t          t          d                    t          t          t          j        ddd                    dz            t          j        d          d          } |                     dd	gd
                                          }t          j
        t          g d          t          t          j        ddd                    gdd	g          }t          ddddddddt
          j        dg	i|          }t          j        ||           d S )N	abcbabcbaz2018-06-01 001minr\   )freqro  rM  )key1key2ru   r  r  FrK   r  r   ru   r   rF   r   r]   r   r[   r    )r   r   rb   r   rp  r   r   rN   r6   r	   r"   rc   rd   re   )rQ   r(   r   rh   s       r   ,test_groupby_multiindex_categorical_datetimer    s+    
[ 1 122R]?KKKLLqP  ill	
 	

 
B ZZ(5Z99>>@@F

!((oFANNNOO	
 v  C (Q1aAq"&!$DESQQQH&(+++++r   zas_index, expectedrR  r<  rD  r  r   r   )r!   rf   ra   r   rV   r   c                     t          t          g dd          g dg dd          }|                    ddg| d	
          d                                         }t	          j        ||           d S )NrR  r<  rD  r  r@  r  r   rV   Tr'  r   )r   r
   rN   rC   rd   rV  )r(  rh   rQ   r(   s       r   ,test_groupby_agg_observed_true_single_columnr    s    6 
YYYj111						RR
 
B ZZc
XZEEcJNNPPFOFH%%%%%r   r   c                     t          g dg dd          }t          g dg dd          }|                    d|           }t          j        ||           d S )NrX   Fr   )Nr   rV   rW   r<   r   )r   shiftrd   rV  )r   ctrh   r*   s       r   
test_shiftr    s    	)=)=)=u
 
 
B *>*>*>  H ((1(
,
,COC"""""r   c                    |                                  dd         }|d                             d          |d<   |d                             d          |d<   t          g d          |d<   |                    dgd	
          }|S )a  
    DataFrame with multiple categorical columns and a column of integers.
    Shortened so as not to contain all possible combinations of categories.
    Useful for testing `observed` kwarg functionality on GroupBy objects.

    Parameters
    ----------
    df: DataFrame
        Non-categorical, longer DataFrame from another fixture, used to derive
        this one

    Returns
    -------
    df_cat: DataFrame
    NrF   rs   r<  rt   rq   rM   rO   r<   r   )copyr   r
   rU  )rQ   df_cats     r   r  r    s    " WWYYrr]F+$$Z00F3K+$$Z00F3K&&F3K[[#Q[''FMr   	operationr  rP   c                    t          g d| d         j        d          }t          g d| d         j        d          }t          j        ||g          }t	          g d|d                                          }|                     ddgd	
          d         } t          ||          t                    }t          j
        ||           d S )N)r   r   r   r   rs   r  )onethreer  twort   )r[   rF   r<   r\   rM   rf   r!   ra   TrK   )r   r   r	   r   r
   r'   rN   r  rC   rd   r   )r  r  lev_alev_br!   rh   r   r(   s           r    test_seriesgroupby_observed_truer    s     ...fSk6GcRRRE000s8IPSTTTE"E5>22E<<<u3???JJLLHnnc3Z$n77<G(WWi((--F68,,,,,r   rL   c                 t   t          j        t          ddgd          t          g dd          gddg                                          \  }}t	          g d	|d
          }|                     ddg|          d
         } t          ||          t                    }t          j	        ||           d S )Nr   r   Fr   r  r  r   rs   rt   r   )r[   rF   r   r<   r   r\   rM   r  rK   )
r	   r"   r   	sortlevelr
   rN   r  rC   rd   r   )r  rL   r  r!   _rh   r   r(   s           r   )test_seriesgroupby_observed_false_or_noner	    s    
 &eU^U;;;444eDDD	
 Cj   ikk E1 ---UEEEHnnc3Z(n;;C@G(WWi((--F68,,,,,r   zobserved, index, datar   r   rs   r  )r  r  r  r  r  r  r   r   rt   )r[   r[   rF   rF   r<   r<   r\   r\   r   r  )rs   rt   Nc                     t          ||d          }|                     ddg|          d                             d           }t          j        ||           d S )NrM   r  rs   rt   rK   c                 T    |                                  |                                 dS )Nr8   r5   r  r   s    r   r   z8test_seriesgroupby_observed_apply_dict.<locals>.<lambda>F  s    !%%''!%%''22 r   )r
   rN   rP   rd   r   )r  rL   r!   rf   rh   r(   s         r   &test_seriesgroupby_observed_apply_dictr    sh    \ 4u3777H^^S#J^::3?EE22 F 68,,,,,r   c                     |                      ddgd          d                                         }|                      ddgd                                          d         }t          j        ||           d S )Nrs   rt   FrK   rM   )rN   r6   rd   r   )r  rh   r(   s      r   4test_groupby_categorical_series_dataframe_consistentr  K  so    ~~sCj5~99#>CCEEH^^S#J^77<<>>sCF68,,,,,r   c                 :   t          t          ddg|          ddgdddg	          }|                                }|                    d| 
                              t           j        d                                          }t          j        ||           d S )NBobGregr   r<   r[   )NameItemr  r  r   rK   T)skipna)	r   r   r  rN   r  rC   r*  rd   re   )rL   r   rQ   rh   r(   s        r   $test_groupby_cat_preserves_structurer  R  s    	eV_g>>>AOO 
 
 
B wwyyH 	

6H
--	Y]4	(	(	  &(+++++r   c                     t          g dt          d          d          } t          j        t          d          5  |                     d                              d            d d d            d S # 1 swxY w Y   d S )Nrk   rF   )rD   r  z'vau'r  rD   c                 H    t          d| j        d         d         gi          S )Nr  rs  vau)r   r   )rowss    r   r   z/test_get_nonexistent_category.<locals>.<lambda>g  s!    Y	"e@T?U7V-W-W r   )r   r   ri  r  KeyErrorrN   rP   rQ   s    r   test_get_nonexistent_categoryr  c  s    	///aAA	B	BB	xw	/	/	/ Y Y


5 W WXXXY Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Ys   *A44A8;A8c           	         | dk    rt          j        d           t          t          t	          d          t	          d                    t          t	          d          dz  t	          d                    dgd	z  d
          }t          | |          }|rd	nd}|                    ddg|          d         }| dk    rt          ||           rJ d S t          ||           }|s>| dv r:t          j	        t          d          5   ||  d d d            n# 1 swxY w Y   d S  || }t          |          |k    sJ d S )Nngroupngroup is not truly a reductionAABBABCDr?  r  r[   皙?rF   cat_1cat_2r  r  r%  r&  rK   r  r0   r3   r2   (empty group due to unobserved categoriesr  )ri  skipr   r   rb   r   rN   hasattrr  r  r  r   )reduction_funcrL   rQ   r)   expected_lengthseries_groupbyr  r(   s           r   0test_series_groupby_on_2_categoricals_unobservedr.  j  s   !!5666	 f$v,,GGG daDLLIIIUQY	
 	

 
B #>266D#+aaOZZ' 2XZFFwON##>>:::::
..
1
1C *>>>]H
 
 
 	 	 CJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S$ZFv;;/))))))s   DD Dc           	      .   | dk    rt          j        d           | dk    r5t           j                            d          }|                    |           t          t          t          d          t          d                    t          t          d	          d
z  t          d                    dgdz  d          }t          d          t          d          t          d          t          d          t          d          g}t          | |          }|
                    ddgd          d         }t          ||           }| dv r:t          j        t          d          5   ||  d d d            n# 1 swxY w Y   d S  || }t          |          }	|D ]?}
|j        |
         }t!          j        |	          rt!          j        |          s||	k    sJ @|	dk    r2| dv r(t%          j        |j        t$          j                  sJ d S | dv sJ d S d S )Nr  r   r0   z6TODO: implemented SeriesGroupBy.corrwith. See GH 32293reasonr!  r  r?  r  r[   r#  rF   r$  ACBCCACBCCr%  r&  FrK   r  r'  r(  r  r   )r/   r:   r?   )rC   r.   )ri  r)  markxfailapplymarkerr   r   rb   tupler   rN   r  r  r  -_results_for_groupbys_with_missing_categoriesr  r   rh  r   
issubdtyper   integer)r+  requestr7  rQ   
unobservedr)   r-  r  r(   missing_fillinr   r  s               r   ?test_series_groupby_on_2_categoricals_unobserved_zeroes_or_nansrA    sx    !!5666##{  K ! 
 
 	D!!!	 f$u++FFF daDKKHHHUQY	
 	

 
B ++uT{{E$KKteDkkRJ">266DZZ' 2UZCCGLN
..
1
1C---]H
 
 
 	 	 CJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S$ZFB>RN U Ujo''TBGCLLTc^>S>S>ST 999=rz:::::::!^3333	  43s   (E::E>E>c           	      ,   | dk    rt          j        d           t          t          t	          d          t	          d                    t          t	          d          t	          d                    g dd	          }g d
}|                    ddgd          }t          | |          }| dk    r
t          }d}nd }d}t          j	        ||          5   t          ||           | }d d d            n# 1 swxY w Y   |D ]}||j        vsJ d S )Nr  2ngroup does not return the Categories on the indexr!  r  r?  111112r#  r#  r#  r#  r$  )rs   2)rt   rH  )rM   1)rM   rH  r%  r&  TrK   r0   'DataFrameGroupBy.corrwith is deprecatedr	  r  )ri  r)  r   r   rb   rN   r   r   rd   assert_produces_warningr  r!   )	r+  rQ   unobserved_catsdf_grpr)   warnwarn_msgr*   r  s	            r   >test_dataframe_groupby_on_2_categoricals_when_observed_is_truerP    s   
 !!HIII	 f$u++FFF f$t**EEE)))	
 	

 
B GFFOZZ'*TZ::F">266D##<		#D	9	9	9 5 5-gfn--t45 5 5 5 5 5 5 5 5 5 5 5 5 5 5  $ $#)#####$ $s   C99C= C=c           	      <   | dk    rt          j        d           t          t          t	          d          t	          d                    t          t	          d          t	          d                    g dd	          }g d
}|                    ddg|          }t          | |          }|sL| dv rHt          j        t          d          5   t          ||           |  d d d            n# 1 swxY w Y   d S | dk    r
t          }d}nd }d}t          j        ||          5   t          ||           | }	d d d            n# 1 swxY w Y   t          |          }
|r/| dk    r)|	j        |         |
k                                    du sJ d S |
t           j        u rG|	j        |                                                                                                         sJ d S |	j        |         |
k                                                                    sJ d S )Nr  rC  r!  r  r?  rD  rE  rF  r$  rG  r%  r&  rK   r'  r(  r  r0   rJ  r	  r?   T)ri  r)  r   r   rb   rN   r   r  r  r  r   rd   rK  r;  r  r-   r   rc   isnull)r+  rL   using_python_scalarsrQ   rL  rM  r)   rN  rO  r*   rh   s              r   ?test_dataframe_groupby_on_2_categoricals_when_observed_is_falserT    s    !!HIII	 f$u++FFF f$t**EEE)))	
 	

 
B GFFOZZ'*XZ>>F">266D *>>>]H
 
 
 	3 	3 ,GFN++T22	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	##<		#D	9	9	9 5 5-gfn--t45 5 5 5 5 5 5 5 5 5 5 5 5 5 5 =^LH B& 8 8(H499;;tCCCCCC	RV		w'..004466::<<<<<<<(H499;;??AAAAAAAs$   C00C47C4'EEEc                  p   g dg dg dd} t          |           }t          j        |d         t          j        ddd                    }||d	<   |                    d	d
gddd          }|d                             d          }|                    d          d         }t          j        ||           d S )N)r   r   rF   r<   r  )rY   rW   rY   rW   r&  r   r   r   r]   r   r   TFr(  r   rL   r6   )	r   r   r   r   r)  rN   r  rd   r   )rY   rQ   r  r+  r(   rh   s         r   3test_series_groupby_categorical_aggregation_getitemrW    s    &6&6&6?S?S?STTA	1B
&EBK2q11
2
2CBwKZZ%(4dUZSSFE]v&&Fzz&!!%(H68,,,,,r   zfunc, expected_valuesc                 :   t          g dg dt          g d          d                              d          }|                    d                              |           }t          d|it          g dd	          
          }t          j        ||           d S )Nr   )r   r<   r<   r[   r[   )r   r   r   r   r<   )idr+  r  rY  r+  r  rT  r   r    )r   r   r  rN   r  r   rd   re   )r  rX  rQ   r(   rh   s        r   $test_groupby_agg_categorical_columnsrZ  (  s     
!//%oo 11	
 	

 
 ioo  ZZ!!%%d++F	/"%			*I*I*I  H &(+++++r   c                     t          dt          g dg d          i          } t          dddgit          j        ddg                    }|                     g d                              t          j                  }t          j	        ||           |                     g d                                          }t          j	        ||           d S )	Nrs   r  r  r?  r[   r<   r    r  )
r   r   r   rg  rN   r  r
   r:   rd   re   rQ   rh   r(   s      r   test_groupby_agg_non_numericr]  =  s    	C___QQQR	S	SB#1vbh1v.>.>???HZZ			""&&v~66F&(+++ZZ			""**,,F&(+++++r   r  c                 h   t          dgt          dgd          j                                        d          }|                    d          d         } t          ||                       }t          dgt          dgd          d|d         j        	          }t          j	        ||           d S )
Ni  rV   r<  rD  r  rs   rt   r   r!   ra   r   )
r   r
   r  
as_orderedrN   r  r   r   rd   r   )r  rQ   
df_groupedr(   rh   s        r   <test_groupby_first_returned_categorical_instead_of_dataframerb  H  s     
$fcU*&E&E&E&I&T&T&V&VWW	X	XBC%J&WZ&&((F 	UD6,,,3bgm  H 68,,,,,r   c            	      t   t          j        ddg          } d| j        _        t	          g dt          g dt          |                     d          }t	          dd	d
git          | d                    }|                    ddd          	                                }t          j        ||           d S )Nr<   r[   F)r<   r\   r]   rv   r  r?  r^   r   r   g      @rV   r   r   r   )r   rg  flags	writeabler   r   r   r   rN   r6   rd   re   )rR   rQ   rh   r(   s       r   test_read_only_category_no_sortrf  W  s    8QFD DJ	ll\\\eDkk!R!R!RSS
 
B sS#J/7GSV7W7W7WXXXHZZ%%Z88==??F&(+++++r   c                     t          g dg dd          } | d                             d          j                            g dd          | d<   t          d	d	d
d	dd
ddd
ddd
d          }|                    dd          }t          g dg dddd          |_        |                     ddgd                                          	                                }t          j        ||           d S )N)smalllargeri  ri  r}  ri  ri  r}  )rM   rs   rs   rM   rs   rM   rs   rM   )r   r   r   r<  )tinyrh  r}  ri  Tr   r   )rs   rM   r<   r\   r[   r   r!   r   )r   r   ra   r   FrK   )r   r   r  set_categoriesrename_axisr   r%   rN   r?   r  rd   re   r\  s      r   #test_sorted_missing_category_valuesrm  c  sM   		 	 	 <;;	
 	

 
B  	5		
			^^@@@$^OO uI !$$1%%A&&1%%		
 	
 H ##E#88H',,,777  H ZZZ77<<>>FFHHF&(+++++r   c                     t          dg di          } | d                             d          | d<   |                     d          j                                        }t          g dt          g dd          d| d         j                  }t          j	        ||           |                     d          
                    ddi          }|                                }t          j        ||           d S )	Ncol_num)r<   r<   r[   r\   r<  col_catr@  r   r_  r1   )r   r   rN   rp  r1   r
   r   r   rd   r   r  to_framere   r  s      r   1test_agg_cython_category_not_implemented_fallbackrr    s    	I|||,	-	-ByM((44ByMZZ	""*0022F 		IIII...m!	  H 68,,,ZZ	""&&	7';<<F  ""H&(+++++r   c                  x   t          g dg dddt          j        dgg dg dd          } |                     dd	i          } |                     d
dg                              d           }t          j        ddgddggd          }t          ddgddgddgd|          }t          j	        ||           d S )N)r<   r<   r<   r<   r  r#  g?g333333?)r   r   r   fee)rs   rt   numerical_col
object_colcategorical_colrw  r<  rs   rt   c                 N    |                                                                  S r   )rh  rC   r  s    r   r   z7test_aggregate_categorical_with_isnan.<locals>.<lambda>  s    27799==?? r   r<   r[   r  r   r   )ru  rv  rw  r   )
r   r   rc   r   rN   r  r	   r   rd   re   r   s       r   %test_aggregate_categorical_with_isnanry    s    	!34666;;;	
 	

 
B 
%z2	3	3BZZc
##''(B(BCCF"QFQF#3:FFFEVa& !1v
 

   H &(+++++r   c                     t          g dg dd          } t          j        g dd          }| d                             |          | d<   |                     d          d                             t                    | d	<   |                                 }t          g dg dg d
d          }|d                             |          |d<   t          j	        ||           d S )N)r<   r<   r<   r[   r[   r\   )WaitingOnTheWay	Deliveredr{  r|  r{  )
package_idstatus)r{  r|  r}  Tr   r  r~  last_status)r{  r{  r{  r{  r{  r{  )r~  r  r  )
r   r   CategoricalDtyper   rN   r   r5   r  rd   re   )rQ   delivery_status_typer(   rh   s       r   test_categorical_transformr    s%   	,,,  
	
 
	

 
B .777   h<&&';<<BxL

<00:DDSIIB}WWYYF,,,    	
 	
 H, "(+223GHHHX&(+++++r   c                 d   t          g d          }g d}t          |||d          }t          ddg          }t          j        ||gddg          }t	          dt
          j        t
          j        dg|d	
          t	          dt
          j        t
          j        dg|d	
          d}||          }|r1|                                                    t
          j	                  }|
                    ddg|          d	         }	 t          |	|                       }
t          j        |
|           d S N)r   r   r<   r<   )r   r<   r<   r   r  r   r<   r   rV   r   rW   r   )r1   r4   rK   )r   r   r	   r"   r
   r   rc   rK  r   rC  rN   r  rd   r   )r  rL   r  r  rQ   rz   r   expected_dictrh   srs_grpr(   s              r   Ftest_series_groupby_first_on_categorical_col_grouped_on_2_categoricalsr    s.   
 lll
#
#C
,,C	3S11	2	2B1vD

!4,sCj
A
A
ACBFBFA.#>>>26261-s=== M
 T"H 6??$$++BH55jj#shj77<G#WWd##%%F68,,,,,r   c                 |   t          g d          }g d}t          |||d          }t          ddg          }t          j        ||gddg          }t	          dt
          j        t
          j        dg|d	
          t	          dt
          j        t
          j        dg|d	
          d}||                                          }|r1|                                	                    t
          j
                  }|                    ddg|          }	 t          |	|                       }
t          j        |
|           d S r  )r   r   r	   r"   r
   r   rc   rq  rK  r   rC  rN   r  rd   re   )r  rL   r  r  rQ   rz   r   r  rh   rM  r(   s              r   Btest_df_groupby_first_on_categorical_col_grouped_on_2_categoricalsr    s5   
 lll
#
#C
,,C	3S11	2	2B1vD

!4,sCj
A
A
ACBFBFA.#>>>26261-s=== M
 T"++--H 6??$$++BH55ZZc
XZ66F"WVT""$$F&(+++++r   c                     t          t          g dg d          t          d          d          } |                     ddd          }|j        }t          j        d	d
gd          t          j        dgd          t          j        g d          d}|                                |                                k    sJ |                                D ]#}t          j	        ||         ||                    $d S )N)rV   rV   r   r  r?  r\   )r  r+   r  Fr   r   r<   intprD  r[   )rV   r   rW   )
r   r   r   rN   indicesr   rg  rW  rd   r  )rQ   r   r(   rh   r  s        r   2test_groupby_categorical_indices_unused_categoriesr  $  s
   	???KKK88	
 	

 
B jjUUj;;G_FXq!fF+++Xqc(((Xb''' H
 ;;==HMMOO++++{{}} @ @
#F3K#????@ @r   c                 X   t          dg di          }|d                             d          |d<    t          |                    d          d         |                       }t	          t          g d          dt          g dd                    }t          j        ||           d S )Nr   r@  r<  rV   r   )ra   r!   )	r   r   r  rN   r
   r   r   rd   r   )r  rQ   r(   rh   s       r   1test_groupby_last_first_preserve_categoricaldtyper  8  s     
C#	$	$BgnnZ((BsG0WRZZ__S)40022FIIISiiic0J0J0J  H 8V,,,,,r   c            
         t          ddgddgddgd          } |                     ddd          } |                     d	d
gd                                          d         }t	          ddgt          j        t          ddgd	          t          ddgd
          g          d          }t          j	        ||           d S )Nr<   r[   r   r  r  r<  r^   rD  r   rV   TrK   rW   r   r   )
r   r   rN   r:   r
   r	   r   r   rd   r   r  s      r   )test_groupby_categorical_observed_nuniquer  D  s    	!Qq!fB8<<	=	=B	z
;;	<	<BZZc
TZ22::<<SAF	
A$q!f3///1A1a&s1S1S1ST
 
   H 68,,,,,r   c            	         t          j        ddgd          } t          ddgddgddggddg	                              d| i          }|                    d          d                                         }t          ddgt          ddgd
          dt          j        ddgd                    }t          j	        ||           d S )Nrh  bigTr   r<   r[   grpdescriptionr   r   r_  )
r   r  r   r   rN   r5   r
   r   rd   r   )r   rQ   r(   rh   s       r   ,test_groupby_categorical_aggregate_functionsr  S  s    GU+;TJJJE	
W5zAw<05-:P
 
 
fmU#$$  ZZ}-1133F	QF'''!gu-=tLLL	  H 68,,,,,r   c                    t          ddgg d          }t          t          ddgg d          ddgd          }|                    d| |	          }|                                }| rt          d
ddgi|          }n)t	          g dg d          }t          d
g di|          }d|j        _        t          j        ||           d S )Nr<   r[   r@  r?  r\   rF   )r   rp   r   rJ  rp   r    )r\   rF   r   )	r   r   rN   rC   r   r!   ra   rd   re   )rL   rK  r  rQ   r{   r(   rh   r!   s           r   test_groupby_categorical_dropnar  e  s    
q!f
3
3
3C	aV			BBB!QPP	Q	QB	C(6	:	:BVVXXF <cAq6]#666 III66c999-U;;;HN&(+++++r   
index_kind)r   singlemultic                    |dk    r>|s<|dk    r6d}|                      t          j                            |                     n|dk    r|st          j        d           t          t          g dg d|	          t          d
          d          }|dk    rdg}	nI|dk    rdg}	|                    |	          }n*|dk    r$ddg}	|d         |d<   |                    |	          }t          ||          }
|
                    |	|||          }|sL|dv rHt          j        t          d          5   t          ||          |
  d d d            n# 1 swxY w Y   d S |dk    r
t          }d}nd }d}t          j        ||          5   t          ||          |
 }d d d            n# 1 swxY w Y   |r |j                            d          j        }n|d         j        j        }t+          g d          }t          j        ||           |dk    r6|j                            d          j        }t          j        ||           d S d S )Nr0   r  zDGH#49950 - corrwith with as_index=False may not have grouping columnr0  r   /Result doesn't have categories, nothing to testr[   r<   r[   r\   r<   rF   r\   r[   r   rF   r^   r   r  rO  rV  r'  r(  r  rJ  r	  )r9  ri  r7  r8  r)  r   r   r   r  r   rN   r  r  r  r   rd   rK  r!   r   r   r  r   r   )r>  r(  r   rL   r+  r  r   rl  rQ   rW  r)   r{   rN  rO  	op_resultr(   rh   s                    r   test_category_order_reducerr  v  s"    ##H#x9O9OTFK--S-99::::	w		x	LMMMM	\\\lllGTTTq	
 	

 
B Wu	x		u\\$	w		T{c74\\$">266D	D8$	J	JB *>>>]H
 
 
 	/ 	/ (GB''..	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	##<		#D	9	9	9 7 7/GB//6	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 /11#66A3#.\\\""H&(+++W11$77B
fh///// s$   2EEE	F))F-0F-r  r  c                 x   t          t          g dg d|          t          d          d          }|dk    rdg}|                    |          }n*|dk    r$dd	g}|d         |d	<   |                    |          }t	          ||          }|                    || ||
          }	 t          |	|          | }
|
j                            d          j	        }t          g d          }t          j        ||           |dk    r6|
j                            d	          j	        }t          j        ||           d S d S )Nr  r  r   rF   r^   r  r   r  rO  rV  )r   r   r   r  r   rN   r  r!   r   r   r   rd   r   )r(  r   rL   transformation_funcr  r   rQ   rW  r)   r{   r  r(   rh   s                r   test_category_order_transformerr    sY    
\\\lllGTTTq	
 	

 
B Xu\\$	w		T{c74\\$"#6;;D	D8$	J	JB0/00$7I_--c22=F\\\""H&(+++W11$77B
fh///// r   methodheadtailc                    t          t          g dg d|          t          d          d          }|dk    rdg}nI|dk    rdg}|                    |          }n*|d	k    r$dd
g}|d         |d
<   |                    |          }|                    || ||          } t          ||                      }	|dk    r|	d         j        j        }
n|	j        	                    d          j        }
t          g d          }t          j        |
|           |d	k    r6|	j        	                    d
          j        }
t          j        |
|           d S d S )Nr  r  r   rF   r^   r   r   r  r  rO  rV  )r   r   r   r  rN   r  r  r   r!   r   r   rd   r   r(  r   rL   r  r  r   rQ   rW  r{   r  r(   rh   s               r   test_category_order_head_tailr    sy    
\\\lllGTTTq	
 	

 
B Wu	x		u\\$	w		T{c74\\$	D8$	J	JB#F##%%IW3#.11#66A\\\""H&(+++W11$77B
fh///// r   )rP   r  r   c                    |dk    r|dk    s| s|dk    rt          j        d           t          t          g dg d|          t	          d          d          }|dk    rd	g}nI|d
k    rd	g}|                    |          }n*|dk    r$d	dg}|d	         |d<   |                    |          }|                    || ||          } t          ||          d           }	|dk    s| s|dk    r|	d	         j        j	        }
n|	j
                            d	          j	        }
t          g d          }t          j        |
|           |dk    r6|	j
                            d          j	        }
t          j        |
|           d S d S )Nr   r   z(No categories in result, nothing to testr  r  r   rF   r^   r   r  r  rO  rV  c                 .    |                      d          S )NTrw   )rC   r   s    r   r   z+test_category_order_apply.<locals>.<lambda>
  s    aeee.F.F r   )ri  r)  r   r   r   r  rN   r  r  r   r!   r   r   rd   r   r  s               r   test_category_order_applyr    s   
 	+*"7"7 #8#w..>???	\\\lllGTTTq	
 	

 
B Wu	x		u\\$	w		T{c74\\$	D8$	J	JB#F##$F$FGGI+X:3H3H3#.11#66A\\\""H&(+++W11$77B
fh///// r   c                 |   |dk    r| st          j        d           t          j        ddd          }t	          g d||          }t          |t          d          d	          }|dk    rd
g}nI|dk    rd
g}|                    |          }n*|dk    r$d
dg}|d
         |d<   |                    |          }|                    || |d          }|	                                }	|rg dng d}
t          |
|j        |d
          }| rIt          d|
i          }|dk    r*t          j        t          ||d                    |_        n[||_        nS|dk    r.t          t          |          t          |          |
d          }nt          t          |          |
d	          }t!          j        |	|           d S )Nr   r  r0  i'  rs  r  r   rF   r^   r   r  r  rO  TrV  )r\   r[   r<   )r[   r<   r\   )r   r   ra   rV   )r   rO  )r   rO  rV   )ri  r)  r   r   r   r   r   r  rN   rC   r   r   r	   
from_framer!   r
   rd   re   )r(  r   r  r   r   grouperrQ   rW  r{   r(   rf   r!   rh   s                r   test_many_categoriesr    s    WXLMMMM4R((J,,,:wOOOG	uQxx00	1	1BWu	x		u\\$	w		T{c74\\$	D8$	F	FBVVXXF +9999)))D+W3  E  	>c4[))  '295PU=V=V3W3WXXHNN"HNN	w		6%==uDQQRR6%==t<<==&(+++++r   rW  a1c                    |r2|dk    r,t          t          d          rJ t          j        d           n;|dk    r5d}|                     t          j                            |                     t          g dg dg dd          }|                    d	d	d
          }d|vr|	                    d          }|
                    |||          }|r|d         }t          ||          }	|sP|dv rL|ddgk    rDt          j        t          d          5   |j        |gg|	R   d d d            n# 1 swxY w Y   d S  |j        |gg|	R  }
 t          ||          |	 }|r|s|dk    r|                    |          }|s7t#          j        d |j        d d         D             d|fgz             |_        n|sg |||_        t)          j        |
|           d S )Nr0   z*corrwith not implemented for SeriesGroupByz1GH#32293: attempts to call SeriesGroupBy.corrwithr0  )r   r   r<   )r[   r\   r\   rN  )r  rO  rV   r<  )r  rO  rO  r   r  rV   r'  r  r(  r  r?   c                     g | ]}|d fS )r	  r   )r  inds     r   r  z!test_agg_list.<locals>.<listcomp>a  s    8883c2Y888r   rs  )r*  r   ri  r)  r9  r7  r8  r   r   rU  rN   r   r  r  r  r  rq  r	   from_tuplesr%   rd   rV  )r>  r(  rL   r+  rP  rW  rl  rQ   r{   r)   r(   rh   s               r   test_agg_listr  ?  s     ;~33=*55555@AAAA	:	%	%AFK--S-99:::	)))999999EE	F	FB	*J77	8	8B4WWTW""	th	B	BB W">266D *>>>4DRV<CWCW]H
 
 
 	, 	, BFN#+d++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	RV^$,t,,,F*wr>**D1H 5[ 5Nf$<$<$$^44 3%188("23B3"7888S.<Q;RR
 
  32T2>2OFH%%%%%s   D22D69D6)tr   numpyr   ri  pandas.errorsr   pandasr   r   r   r   r   r	   r
   r   pandas._testing_testingrd   pandas.api.typingr   pandas.tests.groupbyr   rc   r,   r;  rS   ri   r}   r   r   r   r   r   r   r   r7  parametrizer  r
  r  r  r-  r6  r=  rF  rL  rZ  r\  r_  rc  rm  rq  rw  rz  r  r  r   renamer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  NaTr  fixturer  r  r	  r"   r  r  r  r  r.  rA  rP  rT  rW  r:   r/   rZ  r]  rb  rf  rm  rr  ry  r  r   boolr  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s              ( ( ( ( ( (                            + + + + + + 8 8 8 8 8 8 DF6 E E E E21 
41 
51 Q1 1 RV1 bf1 bf1 BF1 
261  BF!1" bf#1$ 
26%1& 
26'1( q)1* A+1, -1. 
26/10 FF66;1 1 1 -B( ( (, , ,	, 	, 	,, , ,6L L LB  &	- 	- 	-"N "N "NJ, , ,4- - -, T5M22- - 32->), ), ),X, , ,6!0 !0 !0H, , ,&, , ,(E E E*+ + +*+ + +" 2	jjj**9993???@#J'''iiic222EE)))4D4DE	
 $K(((  555  555	
 & u66& & 76' (&D+ + +*- - -, , ,( T5M22  32@$P $P $PN, , ,2L L L- - -&$ $ $ v 
a		!Qq!f556 
a			 	 !4!4	5	5aS1v7N7NO	a		!Qq!f556 - - -<0 <0 <0~  "    t--- - .--< 	8W%&	(G$%	7#$	7#$	 - - -&( ( (2- - -- - -% % %, T5M22, , 32,D T5M22/, /, 32/,d- - -8- - -0, , ,2  F,j,VIIIZ888)))DSRUJ   YY  		
 I			<<<""  		
 2& &3 2& bfbf'=>># # ?>#   0 ug&677
- 
- 87
- ug&677eT]33- - 43 87-"  "J"E5'A+!3:CPPPETTT(   
 E5%.1,--
 
 %$$	
  #J#$$eU^UCCC$$%<%<%<eLLLE5%.))
 '&&   1aArvrvq!D	
 #J#$$eU^UCCC$$%<%<%<eLLLE5%.))
 '&&   1aArvrvq!D	
9(+ +X- -Y+ +X-- - -, , ,"Y Y Y#* #* #*L44 44 44n$ $ $B eT]330B 0B 430Bf	- 	- 	- niii 6<";< , ,	 ,", , , '6!233- - 43-	, 	, 	,*, *, *,Z, , ,,, , ,6., ., .,b '6!233-
-- - - 43-0 '6!233,
,, , , 43,0@ @ @( '6!233- - 43-- - -- - -$, , ," 'C'C'CDDT5M2230 30 32 ED30l '':;;T5M220 0 32 <;0: 'C'C'CDDFF#344T5M220 0 32 54 ED0B 'C'C'CDD#@#@#@AAT5M22 0  0 32 BA ED 0F 'C'C'CDD$, $, ED$,N u664&4,!788%& %& 98 76%& %& %&r   