U
    /ec                    @   s$  d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlZd dlmZ d dlmZ d dlZd dlmZ d dlm Z  d d	l!m"Z" d d
lm#Z#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@ d dlAmBZBmCZC zd dlDZDW n eEk
r   dZDY nX ejFdddgdddgdd ddgdejFdddgdddgddddgdejFdddgd d d gddddgddZGe9dddeHg deF dZIeFeGdeId dddgZJeJK ZLi ZMej#j&r`d eMd!< d"d# ZNd$d% ZOd&d' ZPd(d) ZQd*d+ ZRd,d- ZSd.d/ ZTd0d1 ZUd2d3 ZVd4d5 ZWd6d7 ZXd8d9 ZYd:d; ZZd<d= Z[d>d? Z\d@dA Z]dBdC Z^ej_j`ej#jadDdEej_bdFdejcdej_jdej#j& dGdEdHgdIdJ ZedKdL ZfdMdN ZgdOdP ZhdQdR Ziej_bdSejcdTdUej_j`eD dVdEdHdWgdXdY Zjej_bdZdddd[d\gfdddd[d\d]gfdddd[d\d^gfdddd[d\d]d^gfdddd]d^gfd_d`gddadbgdfejkgdddfd`dcgddaddgdfdd`dcgddfdcdedfgdddfgdgdh Zldidj Zmdkdl Zndmdn Zododp Zpdqdr Zqej_bdse=jre=jsejce=jtej_jddtdEgdHejce=juej_jddtdEgdHgdudv Zvdwdx Zwej_bdydzd{gd|d} Zxd~d Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zej_jdddEdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zej_j`e& ddEdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zej_bdejcdTdej_j`eD dVdEdHdgdd Zej_bdejcdTej_j`eD dVdEdHdgddƄ Zej_bdejcdTej_j`eD dVdEdHdgddȄ Zej_dɡej_bdejcdTejdddgdddgdejFdddgdddggdaddgdddgdԍfej_j`eD dVdEdHdejdddgdddgdejFdddgdddggdaddgdddgdԍffgdd߄ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zej_bddddd gdd Zej_bddddd gdd Zdd Zdd Zd	d
 Zdd Zdd Zej_jdd Zdd Zdd Zej_bddd gej_bdddddgej_bdddddgej_bdedgej_bddd dd gdd  Zej_bddd gej_bdddgej_bd!d"d#gej_bdd$d d%d gd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zej_jej_bdFdd2d3gej_bd4d5d6d7d8gej_bd9d:d;d<gej_bd=d>d?d?gd@dA ZdBdC ZdDdE ZdFdG ZdHdI Zej_bdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[ejdd\ejdd\fgd]d^ ZŐd_d` ZƐdadb Zǐdcdd Zej_bdedd gdfdg Zɐdhdi Zʐdjdk Zːdldm Z̐dndo Z͐dpdq Zΐdrds Zϐdtdu ZАdvdw Zѐdxdy ZҐdzd{ ZӐd|d} ZԐd~d ZՐdd Zej_bdegdfdegfejegegfdegdfgdd Zڐdd Zېdd Zܐdd Zݐdd Zސdd Zߐdd Zdd Zdd Zej_bddgg gdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zej_bdd d gdd Zej_bdd dgdd Zej_bddddgd dfddd ejg ddfgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zej_jdĐdń ZdƐdǄ Zej_jdȐdɄ Zdʐd˄ Zd̐d̈́ Zej_jdΐdτ ZdАdф ZdҐdӄ ZdԐdՄ Z d֐dׄ Zdؐdل Zdڐdۄ Zdܐd݄ Zdސd߄ Zej_j`e*ddEdd Zdd Zdd Zdd Z	ej_bdddej
jddgddgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd-dd Zdd Zdd Zej_j`e' ddEdd Zdd	 Zd
d Zdd Zej_bddejejgdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$ej_bddd gej_bd e%d!e&ej'j'd!d"ej(d#d!d$gd%d& Z)d'd( Z*d)d* Z+d+d, Z,d-d. Z-ej_bd/e.ejejejHgd0d1 Z/d2d3 Z0d4d5 Z1d6d7 Z2d8d9 Z3d:d; Z4ej_bd<d=d>d?gd@dA Z5ej_bdBd=d>d?gdCdD Z6dEdF Z7dGdH Z8ej_bdÐdIdJgdKdL Z9ej_bdFddd2gej_bdMddgej_bdNdddd2gdOdP Z:ej_bdMddgdQdR Z;ej_bdMddgdSdT Z<dUdV Z=dWdX Z>dYdZ Z?ej_bd[dd gej_bd\dd gd]d^ Z@ej_bd[dd gej_bd\dd gd_d` ZAej_bd\dd gdadb ZBej_bd[dd gej_bd\dd gdcdd ZCej_bdedfdgdhdidjdkdldmdndodpdqgdrds ZDdtdu ZEdvdw ZFej_bddejcdTej_j`eD dVdEdHgdxdy ZGdzd{ ZHd|d} ZId~d ZJej_bdejKd gddggdd ZLej_bdd dgdd ZMdd ZNdd ZOej_bdddd d ddgfddd ddgfddd d ddgfdddd dgfddd d ddgfddd dddgfddd ddgfddd d dgfdddd dgfddd d ddgfg
dd ZPej_bdeQdd dfeQdddfeQdddfdd ddgddfdd ddgddfdd ddgddfdd ddgddfej(ddd$ddfej(ddd$eRddfej(ddd$deRdfej(ddd$eRddfej(ddd$deRdfgdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXej_bdsejYe=jZgdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd ZidÐdĄ ZjdŐdƄ ZkdǐdȄ Zldɐdʄ Zmdːd̄ Znd͐d΄ ZodϐdЄ Zpdѐd҄ ZqdӐdԄ ZrdՐdք Zsej_bdddgej_bdddgej_bdd dgej_bdd dgdېd܄ Ztdݐdބ Zudߐd Zvdd Zwej_bddd gej_bdd dgdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zej_jdddEdd Zdd Zdd Zdd Zej_j`ej#j' d dEdd Zdd Zdd Zdd Zd	d
 Zej_j`e*ddEdd Zdd Zdd Zej_j`e*ddEdd Zdd Zdd Zdd Zej_bdeegej_bddd[gej_bdFddgdd Zdd Zdd  Zd!d" Zej_j`e) d#dEej_bdd$d%d&d'd(gd)d* Zej_j`e) d#dEd+d, ZdS (.      Ndatetime	timedelta)product)add)PerformanceWarning)format)delayed)compute_as_if_collection)
fuse_roots)_compatmethods)PANDAS_GT_110PANDAS_GT_120PANDAS_GT_140PANDAS_GT_150PANDAS_GT_200check_numeric_only_deprecationtm)Scalar_concat_map_freq_to_period_startacahas_parallel_typeis_broadcastablerepartition_divisionstotal_mem_usage)	assert_eqassert_max_deps	make_meta)
timeseries)Mis_dataframe_likeis_series_like	put_lines)_check_warning	hlg_layer                  abindex      	   xr   r7   r'   r7   r(   i8)r1   parent_metar7   FZ
check_freqc                  C   s   t jj} d}|| kstd S )N5Some inconsistencies with the Dask version may exist.)dr   __doc__AssertionError)doc
disclaimer rB   G/tmp/pip-unpacked-wheel-dbjnr7gq/dask/dataframe/tests/test_dataframe.pytest_dataframe_docE   s    rD   c                  C   sV   G dd d} t jd| j| d z(t jj}d}||ks:td|ksFtW 5 tj`X d S )Nc                   @   s   e Zd Zdd ZdS )z/test_dataframe_doc_from_non_pandas.<locals>.Fooc                 S   s   dS )zyThis is a new docstring that I just made up

            Parameters:
            ----------
            None
            NrB   )selfrB   rB   rC   fooM   s    z3test_dataframe_doc_from_non_pandas.<locals>.Foo.fooN)__name__
__module____qualname__rF   rB   rB   rB   rC   FooL   s   rJ   rF   )originalr<   z!new docstring that I just made up)r=   Z_bind_operator_methodrF   dd	DataFramer>   r?   )rJ   r@   rA   rB   rB   rC   "test_dataframe_doc_from_non_pandasK   s    	rN   c                  C   s.  t jddddddddd	g	d
ddddddddg	dd} ttd d |  ttjt ddg tttd dk ttd dk  ttddg tddg  ttj	tj	 tj
  tj
 kstttj
  tj
 stttj
  tj
 sttjjtjjksttts*td S )Nr(   r)   r*   r+   r,   r3   r2   r4   
   r   r'   r.   )r1   namer/   )pdSeriesr   r=   r   assert_index_equalcolumnsIndexfullr.   r/   meancomputer?   npZallclosevarstdr1   _namerepr)expectedrB   rB   rC   test_Dataframe`   s      " "r_   c                   C   s   t tdtd t tdtd t tdtd d t td dtd d t td dtd d t td dtd d d ttjdddjttjdddjkstttjdddjttjdddjkstt tdtd t tdtd t tdtd d t td dtd d t td dtd d t td dtd d d ttjdddjttjdddjkstttjdddjttjdddjkstd S )Nr(   r)   r6   r.   FrX   r9   )	r   r=   headrV   dsksorteddaskr?   tailrB   rB   rB   rC   test_head_tailu   s0    "

"rf   c                	   C   s   t tjdddtd t tjddddtd t tjdddtd t tjdddtd t tjdddtd tt tjddd W 5 Q R X d S )Nr+   r(   npartitionsF)rh   rX   r3   )r   r=   ra   rV   pytestraises
ValueErrorrB   rB   rB   rC   test_head_npartitions   s    rm   c               
   C   s   d} t jt| d td W 5 Q R X d} t jt| d td W 5 Q R X t jt| d td W 5 Q R X t jt| d tjddd W 5 Q R X d	D ]2}tjd
d}tjd|d W 5 Q R X |rtqtj	t
ddddgidd}tjd
d}|  W 5 Q R X |rtd S )Nz%5 elements requested, only 3 elementsmatchr+   zInsufficient elementsd   r3   r(   rg   )r)   ri   TrecordrO   r7   r'   r)   )rj   warnsUserWarningr=   ra   warningscatch_warningsr?   rL   from_pandasrQ   rM   )ro   nrr   Zd2rB   rB   rC   test_head_npartitions_warn   s$    
ry   c                   C   s<   t tjdtjd d  t tjdtjd d  d S )Nr(   r)   )r   r=   r1   ra   rV   rB   rB   rB   rC   test_index_head   s    rz   c                   C   s>   t tjtjstt tjd tjs(tttd td  d S Nr'   )
isinstancer=   r.   rL   rR   r?   r   rV   rB   rB   rB   rC   test_Series   s    r}   c                  C   sx   t jtjddtddt jtjddt jdddddfD ]2} t| d}t	|j
| j
 tt|fd	d
 q@d S )NrO   r+   
abcdefghijr0   z
2011-01-01D)freqperiodsr)   c                 S   s   | j j S Nr0   ddfrB   rB   rC   <lambda>       ztest_Index.<locals>.<lambda>)rQ   rM   rY   randomrandnlist
date_rangerL   rw   r   r1   rj   rk   AttributeError)Zcaser   rB   rB   rC   
test_Index   s    r   c                  C   sb   t ddgddgd} tj| dd}t|jt| jks>ttdd t|j| jD s^td S )	Nr'   r(   r)   r*   col1col2rg   c                 s   s   | ]\}}t ||V  qd S r   r   .0r=   prB   rB   rC   	<genexpr>   s     ztest_axes.<locals>.<genexpr>)	rQ   rM   rL   rw   lenaxesr?   allzip)pdfdfrB   rB   rC   	test_axes   s    r   c                  C   sV   t dg} tj| dd}t|jt| jks2ttdd t|j| jD sRtd S )Nabcder(   rg   c                 s   s   | ]\}}t ||V  qd S r   r   r   rB   rB   rC   r      s     z#test_series_axes.<locals>.<genexpr>)	rQ   rR   rL   rw   r   r   r?   r   r   )psdsrB   rB   rC   test_series_axes   s    r   c                  C   s   t d} td| idd}t|ds(tdt|ks8tt||  t|dksRtt	d} td| id| }t|drztdt|kstt||  t|dkstd S )	Nr'   r.   r   r.   r:   dtypezdd.Scalar<a, dtype=int64>z
2001-01-01zdd.Scalar<a, type=Timestamp>)
rY   int64r   hasattrr?   dirr   r]   rQ   	Timestamp)valsrB   rB   rC   test_Scalar   s    



r   c               	   C   sD   t d} td| idd}d}tjt|d t| W 5 Q R X d S )Nr'   r   r.   r:   z&cannot be converted to a boolean valuern   )rY   r   r   rj   rk   	TypeErrorbool)r   r   msgrB   rB   rC   test_scalar_raises   s
    
r   c                      s   dt tkstdt tks tttdd  tjt	ddddgidd	 dt  ks^ttjt	ddgddgd
dd	 dt  kstdt  ksttjt
 dd	 tt fdd d S )Nr.   rF   c                   S   s   t jS r   )r=   rF   rB   rB   rB   rC   r      r   z!test_attributes.<locals>.<lambda>za b cr'   r(   r)   rg   )r.   r+   r+   c                      s    j S r   rF   rB   r   rB   rC   r     r   )r   r=   r?   rj   rk   r   rL   rw   rQ   rM   r   makeTimeDataFramerB   rB   r   rC   test_attributes   s    "r   c                   C   s~   t tjtddg t tddg jtddg td jdksJttd d jdks`ttd td  jd ksztd S )Nr.   r/   r'   )r   rS   r=   rT   rQ   rU   rP   r?   rB   rB   rB   rC   test_column_names  s
     r   c                  C   s   t jddddgddddgd	d
dddgd} t| d}|jdksFtt|d | j t|jj	ddgksntt|d | j d S )Nr'   r(   r)   r*   r.   r/   cr=   )_meta	divisionsr   r+   r0   )r   r)   r+   r   r   )
rQ   rM   rL   rw   r   r?   r   r   r   rT   r   r   rB   rB   rC   %test_columns_named_divisions_and_meta  s    
r   c                  C   s|   t jjd ksttjddddddddd	d
g
dd} ttj	dd| }t
|d}|jjdksdt|j jdksxtd S )Nr   r'   r(   r)   r*   r+   r,   r3   r2   r4   r7   rP   rO   )r=   r1   rP   r?   rQ   rU   rM   rY   r   r   rL   rw   rX   )idxr   r   rB   rB   rC   test_index_names  s    "r   zFreq no longer included in ts)reasonrh   zFixed upstream.)Zmarksc                 C   s   t t jddd}t t jdddd}t ||d}tj|| d}|jd j| jd j  kr||j d jksn t	d S )	N20130101rO   r   z
US/Eastern)r   tz)r   Znotzrg   r   )
rQ   rR   r   rM   rL   rw   r   r   rX   r?   )rh   Zs_naiveZs_awarer   r   rB   rB   rC   test_timezone_freq$  s
    r   c               
   C   sD  t dddddddgdddddddgd} t| d}d	d
g|_d	d
g| _t|jt d	d
g t|jjt d	d
g t	||  d}t
t}ddddg|_W 5 Q R X |t|jkstt ddddgddddgd} tj| dd}d	d
g| _d	d
g|_t|jt d	d
g t|jjt d	d
g t	||  d S )Nr'   r(   r)   r*   r+   r,   r3   r-   r7   yzILength mismatch: Expected axis has 2 elements, new values have 4 elements)A0)Br'   rg   )rQ   rM   rL   rw   rT   r   rS   rU   r   r   rj   rk   rl   strvaluer?   )r   r   r   errrB   rB   rC   test_rename_columns:  s$    ,


 

r   c                  C   s   t jdddddddgdd	} t| d}d
| _d
|_| jd
ksBtt||  | j}|j}d
|_d
|_|jd
ksrtt|| d S )Nr'   r(   r)   r*   r+   r,   r3   r7   r   Zrenamed)rQ   rR   rL   rw   rP   r?   r   r1   )r   r   indZdindrB   rB   rC   test_rename_seriesU  s    
r   c                  C   sl   t jdddddddgdd	} t| d}t|d
| d
 |jdksLtt| |   t||  d S )Nr'   r(   r)   r*   r+   r,   r3   r7   r   r   )rQ   rR   rL   rw   r   renamerP   r?   r   r   rB   rB   rC   test_rename_series_methodg  s    r   c               	   C   sx  t jdddddddgdd	} t| d
}dD ]d}|jdd |d}t|| dd  |j|ksdt|j| |d}t|| |  |j|ks,tq,t	t
 |jdd dd W 5 Q R X t|dd | dd  ||}t|| |  |jrt| }|jdd dd}t|| dd  |jr6t|jdd ddd}||ksXt| jdd dd t||  d S )Nr.   r/   r   r=   efgr7   r   r(   TFc                 S   s   | d S Nr(   rB   r7   rB   rB   rC   r   y  r   z-test_rename_series_method_2.<locals>.<lambda>)sorted_indexc                 S   s   | d S r   rB   r   rB   rB   rC   r   z  r   c                 S   s   |  S r   rB   r   rB   rB   rC   r     r   Tc                 S   s   |  S r   rB   r   rB   rB   rC   r     r   c                 S   s   | d S r   rB   r   rB   rB   rC   r     r   c                 S   s   | d S r   rB   r   rB   rB   rC   r     r   c                 S   s   | d S r   rB   r   rB   rB   rC   r     r   )inplacer   c                 S   s   | d S r   rB   r   rB   rB   rC   r     r   r   )rQ   rR   rL   rw   r   r   known_divisionsr?   rj   rk   rl   Zclear_divisions)r   r   Z	is_sortedresZds2rB   rB   rC   test_rename_series_method_2s  s.    

r   zmethod,test_valuestdigest)r,   rO   zRequires crick)rd   )r*      c              	   C   s  t tt|d |d  }t tt|d |d  tt|d |d  d}t||d }t||d }ddg}t| |j| d t| |j| d t|j|d|j|| d t| |jd	| d
 t| |jd	| d
 t tt|d |d  tt|d |d  tdd |d  |d  d}t||d }t| |j| d t| |jd	| d
 d S )Nr'   r   r-         ?      ?percentiles_methodpercentiles)r   r   r(   )split_everyr   Zabcdefr.   r/   r   )	rQ   rR   r   rangerM   rL   rw   r   describe)methodtest_valuesr   r   r   r   Ztest_quantilesrB   rB   rC   test_describe_numeric  s4    
r   z"include,exclude,percentiles,subsetr   r=   r   r   )r   NNNnumberr         ?objectr   r   r   c                 C   s  dddd d dgd d dddddgd d ddgd t d	t d	t d
t dd d gd tddtddd d tddtddgd dddgd d}t |}|d k	r|jd d |f }t|d}trddi}ni }|j	f | ||d|}|j	f | ||d|}	d|	kr:|r:tj
|	jd< |	jddd t||	 |d krdD ]b}
||
 j	f | |d|}	|
dkr|r|	jddd ||
 j	f | |d|}t|	| qRd S )Naaabbbzzzr(   r   r'   r)   r*   2017-05-09 00:00:00.0060002017-05-09 07:56:23.8586942017-05-09 05:59:58.938999r   TF)r.   r   r=   r   r   r   datetime_is_numeric)includeexcluder   r   )rW   r   r   )howr   )r.   r   r   r   r   r   rW   r   )rQ   r   rY   timedelta64rM   locrL   rw   r   r   nanatdropnar   drop)r   r   r   subsetdatar   r   Zdatetime_is_numeric_kwargactualr^   colrB   rB   rC   test_describe  s    




	




 
 r   c               	   C   s  dddd d dgd d dddddgd d ddgd t d	t d	t d
t dd d gd d} t | }t|d}t| |  dD ]}t||  ||   qtrtj	t
dd |j  W 5 Q R X n>t|j |j  tjtdd |jjdd W 5 Q R X d S )Nr   r   r   r(   r   r'   r)   r*   r   r   r   )r.   r   r=   r   r.   r   zVTreating datetime data as categorical rather than numeric in `.describe` is deprecatedrn   z>datetime_is_numeric=True is only supported for pandas >= 1.1.0T)r   )rQ   r   rM   rL   rw   r   r   r   rj   rs   FutureWarningr   rk   NotImplementedError)r   r   r   r   rB   rB   rC   )test_describe_without_datetime_is_numeric  s<    
r  c               	   C   s   t dd d gi} t| d}t g g d}t|d}tt i d}t|  |jdd  tt	 |jdd  W 5 Q R X t
t |jdd  W 5 Q R X d S )Nr   r(   r   r   rd   r   )rQ   rM   rL   rw   r   r   rX   rj   rs   RuntimeWarningrk   rl   Zdf_noneZddf_noneZdf_len0Zddf_len0Z
ddf_nocolsrB   rB   rC   test_describe_emptyI  s     r  c               	   C   s   t d tdd d gi} t| d}tdg i}t|d}tti d}t|  |jdd  t	
 > t	dt t| |jdd t| |jdd W 5 Q R X t t |jdd  W 5 Q R X d S )Ncrickr   r(   r   r   ignore)rj   importorskiprQ   rM   rL   rw   r   r   rX   ru   rv   simplefilterr  rk   rl   r  rB   rB   rC   test_describe_empty_tdigest]  s     
 
 r  c                  C   s   t dd} t| }ddddgddddgdddgfD ]n}tttjfD ]\}|dkrd|j|d	 }n|j||d	 }t
|d	 d
 t
|d d t
|d d qFq6dS )zmake sure describe is sorting percentiles parameter, q, properly and can
    handle lists, tuples and ndarrays.

    See https://github.com/dask/dask/issues/4642.
    r   e   Nr   r   r   Gz?r   z25%      9@z50%      I@z75%     R@)daarangerL   from_dask_arrayr   tuplerY   arrayr   rX   r   )r   r   qZ	f_convertrrB   rB   rC   %test_describe_for_possibly_unsorted_qv  s    
$r  c                  C   s  dd t dD } tjtjddtd| d}tjtjddtd| d}t|d}t|d}t	|
 |
  t	| |  t	| |  t	| |  t	|j
dd|j
dd t	|jdd|jdd t	|jdd|jdd t	|jdd|jdd tj
||d	 t	||
  tj||d	 t	||  |j|d	 t	||  |j|d	 t	||  tj
||dd
 t	||j
dd tj||dd
 t	||jdd |j|dd
 t	||jdd |j|dd
 t	||jdd t	|j
 |j
  t	|j |j  t	|j |j  t	|j |j  tddtjdddddgddtjtjtjdtjtjgtjgd d}t|d}t	|
 |
  t	| |  t	| |  t	| |  t	|j
dd|j
dd t	|jdd|jdd t	|jdd|jdd t	|jdd|jdd t	|j
dd|j
dd t	|jdd|jdd t	|jdd|jdd t	|jdd|jdd t	|j
ddd|j
ddd t	|jddd|jddd t	|jddd|jddd t	|jddd|jddd tjtjddtdd}t|d}t	|
 |
  t	| |  t	| |  t	| |  t	|j
dd|j
dd t	|jdd|jdd t	|jdd|jdd t	|jdd|jdd t	|j
dd|j
dd t	|jdd|jdd t	|jdd|jdd t	|jdd|jdd t	|j
ddd|j
ddd t	|jddd|jddd t	|jddd|jddd t	|jddd|jddd d S )Nc                 S   s   g | ]}d |dqS )rowZ03drB   r   irB   rB   rC   
<listcomp>  s     z#test_cumulative.<locals>.<listcomp>rp   r+   r   rT   r1   r'   axis)out)r"  r!  r(   r*   r,   r3   r2   r   r)   Fskipnar!  r$  ZabbrT   )r   rQ   rM   rY   r   r   r   rL   rw   r   cumsumcumprodcummincummaxr.   r   )r1   r   Zdf_outr   Zddf_outrB   rB   rC   test_cumulative  s    
r+  funcz?ValueError: Can only compare identically-labeled Series objectsc                 C   s   t ddddddddd	gi}tj|dd
}t| ||jdk  | ||jdk   t dddddd ddd dd	g
i}tj|dd
}t| ||jdk  | ||jdk   d S Nr7   r'   r(   r)   r*   r+   r,   r3   r2   rg   )rQ   rM   rL   rw   r   r7   )r,  r   r   rB   rB   rC    test_cumulative_empty_partitions  s    &"r.  c               	   C   s*  t jtjdddtjdgddtjdtjtjgddddtjdgdddd	d
ddgd} t| d}t|j | j  t|j	 | j	  t|j
 | j
  t| |   t|jdd| jdd t|jdgd| jdgd t|jddgd| jddgd t|jddgdd| jddgdd t|jd d| jd d t|jdd| jdd t|jdd| jdd t|jdd| jdd t|jdd| jdd tjtdd |jddd W 5 Q R X t ddtjgdddgd} tj| dd}t|jdgd| jdgd d S )Nr(   r)   r*   r,   r'   r7   r   zrO   r      (   2   <   r0   r   )r   r7   r   r   r0  )r   r   )threshr   z,cannot set both the how and thresh argumentsrn   )r   r6  )_0Z_1rg   r7  )rQ   rM   rY   r   rL   rw   r   r7   r   r   r0  rj   rk   r   r   rB   rB   rC   test_dropna  s:    "r8  zlower, upper)r(   r+   )      @      @c                 C   s  t ddddddddd	g	dddddddddg	d
}t|d}t ddddddddd	g	}t|d}t|j| |d|j| |d t|j| d|j| d t|j|d|j|d t|j| |d|j| |d t|j| d|j| d t|j|d|j|d d S )Nr'   r(   r)   r*   r+   r,   r3   r2   r4   r-   )lowerupper)r;  r<  )rQ   rM   rL   rw   rR   r   clip)r;  r<  r   r   r   r   rB   rB   rC   	test_clip7  s    ,r?  c               	   C   sj  t ddddgi} t ddgi}t ddd}t| d}t|d}t|d}t|  |  tt jdgdd	|  t| |  tt	}|jdd
 W 5 Q R X t
| d}|t|jksttt}|jdd
 W 5 Q R X dd dt
| }|t|jks"ttt}|jdd
 W 5 Q R X dt
| }|t|jksftd S )Nr7   r'   r)   r,   r   rp   )testr/   r(   r   r   z& does not support squeeze along axis 0zNo axis z for object type r@  zNo axis test for object type )rQ   rM   rR   rL   rw   r   Zsqueezerj   rk   r  typer   r   r?   rl   )r   df2r   r   ddf2r   infor   rB   rB   rC   test_squeezeK  s*    rE  c                  C   s  t ddddddddd	g	dddddddddg	d
} t| d}t dddgd dddgd d
}t|d}t jddddddddd	g	dddddddddg	d
dddddddddg	d}t|d}t jdddgd dddgd d
ddddd	ddddg	d}t|d}t jddddddddd	g	d	ddddddddg	ddddd	ddddg	ddddddddddg	d}t|d}	t jdddgd dddgd dgd	 dgd	 dddddd	ddddg	d}
t|
d}||| |f|ddddg|| |f||||f|ddddg|dd	ddg||f|	|||
f|	ddddg|||
f||| |f||||f|	|
||
fg	}|D ]\}}}}t|tjstt|tjt jfstt|t jstt|t jstt|||| t|	||	| t||| |||  t|	|| |	||  t||j
| ||j
|  t|	|j
| |	|j
|  t|j
|j
|j
|j
 t|j
	|j
|j
	|j
 t|j
|j
|j
 |j
|j
|j
  t|j
	|j
|j
 |j
	|j
|j
  qfd S )Nr'   r(   r)   r*   r+   r,   r3   r2   r4   r-   TFr   r0   rO            r   r.   r/   r   r=   )rQ   rM   rL   rw   repartitionr|   r?   r   wheremaskr.   )pdf1ddf1pdf2rC  Zpdf3Zddf3Zpdf4Zddf4Zpdf5Zddf5Zpdf6Zddf6Zcasesr   Zddcondr   ZpdcondrB   rB   rC   test_where_maskh  st    ,$,	

&



""*rP  c                   C   sR   t tdd tjtjtjtj  t tdd tjtjdtjtj d  d S )Nc                 S   s   | | S r   rB   r-   rB   rB   rC   r     r   z4test_map_partitions_multi_argument.<locals>.<lambda>c                 S   s   | | | S r   rB   r   rB   rB   rC   r     r   r'   )r   rL   map_partitionsr=   r.   r/   rV   rB   rB   rB   rC   "test_map_partitions_multi_argument  s
    $ rR  c                  C   s  t tjdd tdt t tdd t tdd } t| jd}| rVt|t | tjdd t td	d t	j
dddgtjd
dd tddidt}tdd |} | jtjtjfkr|  dksttdd |} | jtjkr|  dkstd S )Nc                 S   s   | S r   rB   r   rB   rB   rC   r     r   z%test_map_partitions.<locals>.<lambda>metac                 S   s   | S r   rB   r   rB   rB   rC   r     r   c                 S   s   | j ddS )Nr'   r   sumr   rB   rB   rC   r     r   zlambda-r'   r   c                 S   s   dS r{   rB   r   rB   rB   rC   r     r   r   Fcheck_divisionsr6   r7   c                 S   s   dS r   rB   r   rB   rB   rC   r     r   r(   c                 S   s   dS )N      @rB   r   rB   rB   rC   r     r   rZ  )r   r=   rQ  rV   r&   rd   is_materializedr?   rV  rQ   rR   rY   r   r   intrL   r   int32rX   float64)resultlayerr7   rB   rB   rC   test_map_partitions  s     "ra  c                  C   s<   t tjdd} t| tjs"ttdd | D s8td S )Nsingle-threaded	schedulerc                 s   s   | ]}|t jkV  qd S r   )rQ   rM   r   r7   rB   rB   rC   r     s     z+test_map_partitions_type.<locals>.<genexpr>)	r=   rQ  rA  rX   r|   rQ   rR   r?   r   r_  rB   rB   rC   test_map_partitions_type  s    rg  c                  C   s\   ddd} t j| t d}t|jd}| r0t|j  |jdd}t|t	j
ksXtd S )Nc                 S   sd   |d k	st d|kst d|ks$t td|d f | s>t tdtj|d f | s`t | S )Nr   divisionr7   )r?   rb   equalsr=   r   r1   )r   Zpartition_inforB   rB   rC   r     s    "z-test_map_partitions_partition_info.<locals>.frS  zf-rb  rc  )N)r=   rQ  r&   rd   r[  r?   validaterX   rA  rQ   rM   )r   r   r`  r_  rB   rB   rC   "test_map_partitions_partition_info  s    

rk  c                  C   s   dd } t tj| ttdjt tj| ttdjks8tt tjdd ttddjt tjdd ttddjksttdd } t tj| tttdjt tj| tttdjkstd S )	Nc                 S   s   | S r   rB   r   rB   rB   rC   r     r   z+test_map_partitions_names.<locals>.<lambda>rS  c                 S   s   | S r   rB   r   rB   rB   rC   r     r   r'   )rT  tokenc                 S   s   | S r   rB   r   rB   rB   rC   r     r   c                 S   s   | S r   rB   r7   r   rB   rB   rC   r     r   )rc   rL   rQ  r=   rd   r?   )r,  rB   rB   rC   test_map_partitions_names  s    

rn  c                  C   s@  t ddddgddddgd	} tj| dd
}tjdd ||d}t|j|j t| | tjdd |j	|j	d}|j
|j	j
kstt| j	| tjdd |j	|j	d}|j
|j	j
kstt| j	| tdd |}t|tjst|jdksttjdd |dd}t|tjst|j
dks,t|jdks<td S )Nr'   r(   r)   r*   r+   r,   r3   r2   rm  rg   c                 S   s   | S r   rB   r   rB   rB   rC   r     r   z1test_map_partitions_column_info.<locals>.<lambda>rS  c                 S   s   | S r   rB   r   rB   rB   rC   r     r   c                 S   s   | S r   rB   r   rB   rB   rC   r     r   c                 S   s   | j | j S r   rm  r   rB   rB   rC   r     r   r:   c                 S   s
   | j d S r{   r   r   rB   rB   rC   r     r   r7   r:   r7   )rQ   rM   rL   rw   rQ  r   rS   rT   r   r7   rP   r?   r|   rR   r   r   r.   r/   rB   rB   rC   test_map_partitions_column_info  s$     
rq  c                  C   s   t ddddgddddgd	} tj| dd
}|dd }t|tjsLtt|j	|j	 |dd }t|tj
szt|jdkst|jdd dd}t|tj
st|jdkst|jdkstd S )Nr'   r(   r)   r*   r+   r,   r3   r2   rm  rg   c                 S   s   | S r   rB   r   rB   rB   rC   r     r   z2test_map_partitions_method_names.<locals>.<lambda>c                 S   s
   | j d S r{   r   r   rB   rB   rC   r     r   r:   c                 S   s
   | j d S r{   r   r   rB   rB   rC   r     r   ro  rS  r7   )rQ   rM   rL   rw   rQ  r|   r?   r   rS   rT   rR   r   rP   rp  rB   rB   rC    test_map_partitions_method_names  s     rr  c                  C   s   t jtddd} t jtjdtjdtjddtjdd| d	}tj|d
d}|j	dd dddgd}|j
|j|j d}t|| |	dd }|d}t|| d S )Nr   myindexr   r+   rW  rO      r  r0   r(   rg   c                 S   s   | j | j| j dS )NC)assignr   r   r   rB   rB   rC   r   &  r   z?test_map_partitions_propagates_index_metadata.<locals>.<lambda>)r   i4)r   rx  )rv  rx  rS  ru  c                 S   s
   |  dS )Nnewindex)rename_axisr   rB   rB   rC   r   ,  r   ry  )rQ   rR   r   rM   rY   r  r]  rL   rw   rQ  rw  r   r   r   rz  )r1   r   r   r   solrB   rB   rC   -test_map_partitions_propagates_index_metadata  s    "

r|  znow we use SubgraphCallablesc                  C   s   t ddddgddddgd	} tj| dd
}ddd}|jj|dd}dtt|jkspdtt|jkspt	t
| jd | |jj|ddj|jj|ddjkst	d S )Nr'   r(   r)   r*   r+   r,   r3   r2   rm  rg   c                 S   s   | | S r   rB   )r   r7   rB   rB   rC   r   6  s    z4test_map_partitions_keeps_kwargs_readable.<locals>.fr   z['x', 5]z{'x': 5})r'   )rQ   rM   rL   rw   r7   rQ  r   dictrd   r?   r   r\   )r   r.   r   r/   rB   rB   rC   )test_map_partitions_keeps_kwargs_readable1  s     
(r~  c                  C   s4   t jtdd} t| d}|jtdd  d S )NZabcdefghijkr&  r(   r5  )rQ   rM   r   rL   rw   r   rX   r   rB   rB   rC   +test_map_partitions_with_delayed_collectionC  s    r  c                  C   sL   t ddddddgi} tj| dd}dd	 }t|||j}t|| d S )
Nr7   r'   r(   r)   r*   r+   rg   c                 S   s(   t | t |kstt | dks$t| S )Nr   )r   r?   )r   Zdf_xrB   rB   rC   checkR  s    zDtest_metadata_inference_single_partition_aligned_args.<locals>.check)rQ   rM   rL   rw   rQ  r7   r   )r   r   r  r   rB   rB   rC   5test_metadata_inference_single_partition_aligned_argsK  s
    r  c               	   C   s   t ddddddgddddddgd} t dddgdddgd}tj| dd	}tj|dd	}|jt j|d
dddd}t j| |dddd}t||d
d
d |jt j|d
dddd}t j|| dddd}t||d
d
d d S )Nr'   r(   r)   r*   r+   r,   r  )r   rv  rg   Fr   left)Zalign_dataframesleft_onright_onr   )r  r  r   )check_indexrY  right)rQ   rM   rL   rw   rQ  merger   )df1rB  rN  rC  r   r^   rB   rB   rC   test_align_dataframes[  s0    (          r  c               	   C   s   t  } t jdd}t }t| | t|| | j|jks@tt j } t jjdd}tj }t| | t|| | j|jkstt j } t jjdd}tj }t| | t|| | j|jkstt	t
 t jdd W 5 Q R X d S )Nr(   r   F)keep)r=   drop_duplicatesrV   r   r\   r?   r.   r1   rj   rk   r  )r   res2r{  rB   rB   rC   test_drop_duplicateso  s(    









r  c               	   C   s   t ddddddgddddddgd} tj| dd}d	d
id	difD ]}t| jjf ||jjf | dgdddgfD ]L}t| jf d|i||jf d|i| t| j|f||j|f| qxqFd S )Nr'   r(   r)   r.   r/   r   rm  rg   r  firstlastr7   r   r   )rQ   rM   rL   rw   r   r7   r  )r   r   kwargssrB   rB   rC   test_drop_duplicates_subset  s    (r  c               	   C   s  t jtjddtdd} tj| dd}|jdks8t	|
d}t|tjsRt	t|| jdd	  |
d
}t|| jdd  |
d}t|| jdd  t|t| t| t| kst	|j
d}t|tjst	t|| jjdd	  |j
d
}t|| jjdd  |j
d}t|| jjdd  t|t| t| t| jksdt	tt |
d W 5 Q R X tt |
d	 W 5 Q R X d S )NrO   r+   r   r&  r*   	chunksize)r   r*   r2   r4   r   r)   r'   r3   r(   r2   r4   ri   )rQ   rM   rY   r   r   r   rL   rw   r   r?   get_partitionr|   r   r   r   r.   rR   rj   rk   rl   )r   r   Zdiv1Zdiv2Zdiv3rB   rB   rC   test_get_partition  s.    


$(r  c                   C   s2   t jdkstt jjdkstt jjdks.td S )Nr(   r'   )r=   ndimr?   r.   r1   rB   rB   rB   rC   	test_ndim  s    r  c                   C   s   t jtjk std S r   )r=   dtypesrV   r   r?   rB   rB   rB   rC   
test_dtype  s    r  c               
   C   st   t ddddddddgi} tj| dd}|j }| j }t|| |jjdd}t|| |j|jksptd S )Nr7   r'   r(   r)   r*   rg   r  	rQ   rM   rL   rw   r7   value_countsr   r\   r?   r   r   r_  r^   result2rB   rB   rC   test_value_counts  s    



r  c               
   C   s|   t ddddddddgi} tj| dd}|jjdd}| jjdd}t|| |jjdd	}t|| |j|jksxtd S )
Nr7   r'   r(   r)   r*   rg   F)sortr  r  r  rB   rB   rC   test_value_counts_not_sorted  s    

r  c               
   C   s   t dddddtjddgi} tj| dd}ts\tjt	dd |j
jd	d
 W 5 Q R X d S |j
jd	d
}| j
jd	d
}t|| |j
jdd	d}t|| |j|jkstd S )Nr7   r'   r(   r)   r*   rg   zdropna is not a valid argumentrn   Fr   )r   r   )rQ   rM   rY   r   rL   rw   r   rj   rk   r  r7   r  r   r\   r?   r  rB   rB   rC   test_value_counts_with_dropna  s    

r  c               
   C   s   t ddddddddgi} tj| dd}|jjdd}| jjdd}t|| |jjddd	}t|| |j|jkszt|jjddd
}t|| |j|jkstd S )Nr7   r'   r(   r)   r*   rg   T)	normalize)r   r  )	split_outr  r  )r   r   r_  r^   r  result3rB   rB   rC    test_value_counts_with_normalize  s    


r  z"dropna implemented in pandas 1.1.0c               
   C   s   t dddddtjddgi} tj| dd}|jjddd	}| jjddd	}t|| |jjdddd
}t|| |j	|j	kst
|jjdddd}t|| |j	|j	kst
|jjdddd}| jjddd	}t|| d S )Nr7   r'   r(   r)   r*   rg   FT)r   r  )r   r   r  )r  r   r  )r   r  r  )rQ   rM   rY   r   rL   rw   r7   r  r   r\   r?   )r   r   r_  r^   r  r  Zresult4Z	expected4rB   rB   rC   +test_value_counts_with_normalize_and_dropna  s    


r  c                  C   s  t ddddddddddg
dddtjddddtjdg
d	} tj| dd
}t|j t j	| j dd t|j
 t j	| j
 dd t|jjddt j	| j dd t|j
jddt j	| j
 dd t|j | j  |jjddj|j jks
td S )Nr'   r(   r)   r*   r.   r   r/   r=   rm  rg   r7   r   r   r  )rQ   rM   rY   r   rL   rw   r   r7   uniquerR   r   r1   r\   r?   r   r   rB   rB   rC   test_unique  s      $$r  c               
   C   sF  dddg} t | }ddgddgd}ddg}tdtdtdg}dddgdddgdddgg}ttj| tj|  ttj|tj| ttj|tj| ttj|tj|  ttj|tj| t	t
 tjtj W 5 Q R X tjtj| tj|  tjtj|tj| tjtj|tj| tjtj|tj|  t	t
 tjtj W 5 Q R X tt| t|  tt|t| tt|t| tt|t|  tt|t| t|tfD ]&}t	t
 t| W 5 Q R X qd S )	Nr'   r(   r)   r   r-   2r*   r+   )rQ   rR   r	   r   r=   r.   isinrV   rj   rk   r  r  utilsr1   )Zf_listZf_seriesZf_dictZf_list2Zf_list_delayedZf_list_of_listsobjrB   rB   rC   	test_isin  sT    







r  c                  C   sT   t tddgddgdd} d| ks,td| ks8td| ksDtd| ksPtd S )	Nr'   r(   r)   r*   )r   r   r   r   r   )rL   rw   rQ   rM   r?   r   rB   rB   rC   test_contains_frameR  s
     r  c                   C   s   t tt tkstt tjt tjks,tt tjt dddksJtt tjtjddgddddksptt tjtjddgddddkstd S )Nr'   rg   r   r(   r&  rF   )	r   r=   rV   r?   r.   rL   rw   rQ   rM   rB   rB   rB   rC   test_lenZ  s
    &r  c                   C   s6   t tjtj t tjjtjj t tjjtjj d S r   )r   r=   sizerV   r.   r1   rB   rB   rB   rC   	test_sizec  s    r  c                  C   s  t j} t| d  | d fttttjf tt| d ttttjf t jj} t| d  ttj tt| d ttjf tj	t
jdddgdddj}|d  |d fdksttj	t
jg g dg dddj}|d  |d fd	kstd S )
Nr   r'   r(   r)   r0   rg   )r)   r   r-   )r   r(   )r=   shaper   rX   r   rV   rT   rL   r.   rw   rQ   rM   r?   )r_  shrB   rB   rC   
test_shapei  s    (" r  c                   C   s(   t tjjtjj t tjjtjj d S r   )r   r=   r.   nbytesrV   r1   rB   rB   rB   rC   test_nbytesx  s    r  zmethod,expected)gffffff?gffffff@r9  g      @       @)rd   )        rZ  g333333?g@r  c                 C   s  t jjddg| d}tjddg}t|dks4t|jdksBtt|j|j t	|t
js`t| }t	|tjsxt|jd t|d kst|jd t|d ksttjtdtdd	}t
|d}|jjddg| d}|ddg}t|dks
t|jdkstt|j|j t	|t
js:t| }t	|tjsTt|jd t|d ksrt|jd t|d
 kstt jjd| d}t	|t
jjst| }||d kstd S )N333333?ffffff?r   r(   )r  r  r   r'   rO   r0   r)   r   r*   )r=   r/   quantilerV   r   r?   r   r   r1   r|   rL   rR   rX   rQ   ilocrj   ZapproxrY   r  rw   corer   )r   r^   r_  expr   r   rB   rB   rC   test_quantile}  s4    r  r   rd   c                 C   sh   t ddtjdgi}tj|dd}| }|j| d}t|| |j }|jj| d}t|| d S )Nr   r   r(   r'   rg   r  )	rQ   rM   rY   r   rL   rw   r  r   r   )r   r   r   r^   r_  rB   rB   rC   test_quantile_missing  s    


r  c                 C   sX   t jjg | d}tjg }|jdks*t|jdks8t| jdksJtt|| d S )Nr  )NNr/   )	r=   r/   r  rV   r   r?   rP   rX   r   )r   r_  r  rB   rB   rC   test_empty_quantile  s    
r  zTignore:In future versions of pandas, numeric_only will be set to False:FutureWarningg      #@g     =@g     3@r   Xr   g      @g     8@g      -@g     @A@r1   rT         @g      ;@g      1@      ?g     5@g      '@g      ,@g      A@g      8@c              	      s  t jtdtddtddddddgd	 d
ddddgd}t|d t   jd}W 5 Q R X |jdkszt	|j
dkst	| }t|t jst	|jdkst	t|jt dddg ||d k st	 jddgd}|jdkst	|j
dkst	| }t|t js&t	t|jt ddg t|jt dddg ||d k  srt	t  |jdd}W 5 Q R X t jdd| tt fdd d S )Nr   r2  rO   r1  r.   r/   r   r=   r+   )r   r  r   rv  r   r  r   rv  r&  r)   r  r'   )r   r  r   r   r   r   )r   r   r   r!  r   c                      s    j ddgddS )Nr   r   r'   r  )r  rB   r   r   rB   rC   r     r   z)test_dataframe_quantile.<locals>.<lambda>)rQ   rM   rY   r  rL   rw   r   r  rh   r?   r   rX   r|   rR   rP   r   rS   r1   rU   r   rT   r   rj   rk   rl   )r   r^   r   r_  rB   r  rC   test_dataframe_quantile  s<    !


	r  c                  C   s   t dd} t| }dddgddddgdddgddddgfD ]B}|| }t|jd d t|jd d t|jd d	 q>|dg }t|jd d |d }t|d d
S )zcheck that quantile is giving correct answers even when quantile parameter, q, may be unsorted.

    See https://github.com/dask/dask/issues/4642.
    r   r  r   r   r   r  r  r  r  N)r  r  rL   r  r  rX   r   r   )r   r   r  r  rB   rB   rC   %test_quantile_for_possibly_unsorted_q"  s    


r  c                  C   sD   t ddddgi} tj| dd}|d d }|dks@tdS )z,See https://github.com/dask/dask/issues/6551r.   r'   r(   r)   rg   r   N)rQ   rM   rL   rw   r  rX   r?   )r   r   r  rB   rB   rC   test_quantile_tiny_partitions=  s    r  c                  C   s   t dg i} tj| dd}| d}t|d| t dtjtjtjtjgi} tj| dd}| d}t|d| dS )z,See https://github.com/dask/dask/issues/2792r   r(   rg   r   N)rQ   rM   rL   rw   r  r   rY   r   )r   r   r^   rB   rB   rC    test_quantile_trivial_partitionsE  s    

r  c                   C   s   t tjtj d S r   )r   r=   r1   rV   rB   rB   rB   rC   
test_indexR  s    r  c                  C   sR  t jtddd tddD dt tdd} tj| d	d
}tj| d	dd}|jrZt|j	dd|j
 |j
|j dd t dddd}|j	dd|j
 |j
|j dd t dddd}| j	dd| j
 | j
| j dd t dddd}t|| t|| |j	| j
d d}t|| j	| j
d d |j	|jd}t|| j	| jd tt |j	| j
d d W 5 Q R X tt |j	ttdd W 5 Q R X tt |j	|j
d W 5 Q R X tt |j	|j
d W 5 Q R X t dddgi} | j	dd dd d tjt dddgidd
}|j	dd dd d t| | d S ) Nr2   c                 S   s   g | ]}t |qS rB   )floatr  rB   rB   rC   r  X  s     ztest_assign.<locals>.<listcomp>rO      r-   Zabcdefghr0   r)   rg   Frh   r  r'   stringc                 S   s   | j | j S r   r  r   rB   rB   rC   r   d  r   ztest_assign.<locals>.<lambda>i  r(   rH  )r   r=   r   r   r   dtc                 S   s   | j | j S r   r  r   rB   rB   rC   r   l  r   c                 S   s   | j | j S r   r  r   rB   rB   rC   r   t  r   r   r4   r   r   c                 S   s   | d S Nr   rB   r   rB   rB   rC   r     r   c                 S   s   | j | j S r   r  r   rB   rB   rC   r     r   )r   rv  c                 S   s   | d S r  rB   r   rB   rB   rC   r     r   c                 S   s   | j | j S r   r  r   rB   rB   rC   r     r   )rQ   rM   r   rU   r   rL   rw   r   r?   rw  r.   rV  r/   r   r   r1   rj   rk   rl   r   )r   r   ddf_unknownr   Zres_unknownr{  rB   rB   rC   test_assignV  sd    





r  c                  C   sL   t jtdtdidd} | j| j d}| jdd d}t|| d S )Nr   rO   r(   rg   )r   c                 S   s
   | j  S r   r   shiftr   rB   rB   rC   r     r   z&test_assign_callable.<locals>.<lambda>)	rL   rw   rQ   rM   r   rw  r   r  r   rp  rB   rB   rC   test_assign_callable  s    r  c                  C   sn   t jtjddgddgdddgddd	} d
tddgi}| jf |}t|jtjdddgddd
gd d S )Nr.   r/   r'   r(   r   r   r   r   rT   rg   Zcol3r   1r   r   )r   r1   )rL   rw   rQ   rM   rR   rw  r   r  )r   new_colr   rB   rB   rC   test_assign_dtypes  s     r  c                  C   sP   t ddgddgd} tj| dd}|j| d d}t|| j| d d d S )	Nr'   r(   r+   r,   r.   r'   rg   r.   r  )rQ   rM   rL   rw   rw  r   r   rB   rB   rC   test_assign_pandas_series  s    r  c                  C   s<  t jtddddddddddg	d	t jdddddd
dddg	ddd} tj| dd}t|jdd | jdd  dd | jj	D }t|j|| j| t|j
|| j
| t |}t|j|| j| t|j
|| j
| t|j
j||j
d| j
| t|j
j|dd| j
| d S )Nr4   r*   r+   r,   r'   r(   r)   r   r-   r2   rs  r   r0   rg   c                 S   s   | d S r{   rB   r   rB   rB   rC   r     r   ztest_map.<locals>.<lambda>c                 S   s   i | ]}||d  qS r'   rB   r   vrB   rB   rC   
<dictcomp>  s      ztest_map.<locals>.<dictcomp>rS  )r/   r:   )rQ   rM   r   rU   rL   rw   r   r.   mapvaluesr/   rR   )r   r   ZlkrB   rB   rC   test_map  s    "
 r  c                  C   sN   t tjddgdtjddgdg} t| jddgks:tt| dksJtd S )Nr.   r/   r&  r   )r   rQ   rM   r   rT   r?   r   r   rB   rB   rC   test_concat  s    $r  c                  C   sn   t jt jd d} t| | j }t| | tt jtt jt jj  tt j tt j t j j  d S )Nr'   r  )r=   rw  r.   rA  _argsr   rV  )r   r   rB   rB   rC   	test_args  s
    
r  c                  C   s0   t js
ttjtdtd d d gd} | jr,td S )Nr7   r   )r=   r   r?   rL   rM   rb   rT  r   rB   rB   rC   test_known_divisions  s    
r  c               	   C   s   t dddgdddgdt dddgdddgdt dd	d
gdddgdd} tdddt  d}t| d|d d d d g}|jdd}t|j |j  t|j|j d |j|j d  d S )Nr'   r(   r)   r*   r+   r,   r-   r3   r2   r4   r   r5   r:   r;   r7   syncrc  )	rQ   rM   r   rL   rX   r   r.   rV  r/   )rb   rT  r=   rV   rB   rB   rC   test_unknown_divisions  s    r  c               	   C   s   t d ddgd ddgdddggt dd d gd ddgdddggg} dd | D }d	d
g}t| |D ]X\}}|D ]J}dD ]@}t|j||d|j||d t|j||d|j||d qxqpqdd S )Nr(   r)   r+   r,   r*   r4   c                 S   s   g | ]}t j|d dqS )r*   rg   )rL   rw   )r   r   rB   rB   rC   r    s     z'test_with_min_count.<locals>.<listcomp>r   r'   )r   r'   r(   r)   )	min_countr!  )rQ   rM   r   r   rV  prod)dfsZddfsr   r   r   r!  r  rB   rB   rC   test_with_min_count  s       r  joininnerouterr  r  c           	      C   s  t jtjdtjdddddddddd	d
dg
d}t jtjdtjdddddddddddd
g
d}t|d}t|d}|j|| d\}}|j|| d\}}t||st	t||st	|d j|d | d\}}|d j|d | d\}}t||st	t||st	|j|| dd\}}|j|| dd\}}t||sTt	t||sdt	|d j|d | dd\}}|d j|d | dd\}}t||st	t||st	d S )NrO   r  r'   rG  r+   r,   r)   r4   r*   rH  rF  r0   r   r(   r3   r2   r  r   r   )r  
fill_value)
rQ   rM   rY   r   r   rL   rw   alignr   r?   	r  Zdf1aZdf1bZddf1aZddf1bZres1r  Zexp1Zexp2rB   rB   rC   
test_align  s4    r  c           	      C   s  t jtjdtjdtjdddddddddd	d
dg
d}t jtjdtjdtjdddddddddddd
g
d}t|d}t|d}|j|| dd\}}|j|| dd\}}t||st	t||st	|j|| dd\}}|j|| dd\}}t||st	t||s(t	|j|| dd\}}|j|| dd\}}t||s`t	t||spt	|j|| dd\}}|j|| dd\}}t||st	t||st	t
t |j|| dd W 5 Q R X t
t |d j|d | dd W 5 Q R X d S )NrO   r   r   rv  r'   rG  r+   r,   r)   r4   r*   rH  rF  r0   )r   rv  r   r   r(   r3   r2   )r  r!  r1   rT   ZXXXr   r   )rQ   rM   rY   r   r   rL   rw   r  r   r?   rj   rk   rl   r  rB   rB   rC   test_align_axis(  s<    ""r   c               
   C   s  t tjddtjgdtjdddgdd} t tjdddgdtjddd	gdd}t| d
}t|d}dd }dd }||| |td f|d fgf|j	|j	| j	|j	td ftdf|d fgf|j
|j
| j
|j
|d f|df|d fgffD ]Z\}}}}	}
|
D ]F\}}|j|	||d}t|j|||d| t|j|	||d| qqt|j|tdd| j|tdd ||tj||tjkstd S )Nr'   r(   rp   r.   r/   r   r  r)   r   r*   r+   c                 S   s   | S r   rB   r-   rB   rB   rC   r   c  r   ztest_combine.<locals>.<lambda>c                 S   s   | t jk	r| | S | S r   )rY   r   r-   rB   rB   rC   r   f  r   r=   )r  F)	overwrite)rQ   rM   rY   r   choicer   rL   rw   r   r   r   combiner   r\   r?   )r  rB  rN  rC  r  Zstr_addZddaZddbr.   r/   runsr,  r  r{  rB   rB   rC   test_combineR  s@    & r  c                  C   s"  t tjddtjgdtjdddgdd} t tjdddgdtjddd	gdd}t| d
}t|d}t|	|| 	| t|	|| 	| t|j
	|j
| j
	|j
 t|j
	|j
| j
	|j
 t|j	|j| j	|j t|j	|j| j	|j d S )Nr'   r(   rp   r.   r/   r   r  r)   r   r*   r+   )rQ   rM   rY   r   r  r   rL   rw   r   Zcombine_firstr   r   )r  rB  rN  rC  rB   rB   rC   test_combine_first  s$    r  c                  C   s   ddl m} m} ddlm} ddlm} t }tj|dd}|d }|| |}t|| |||}t|| || |j	}t|j	| |||j	}t|j	| || |j
}t|j
| |||j
}t|j
| |j	 }	|||	}
t|	|
 d S )Nr   )dumpsloads)r  )r  r)   rg   r(   )pickler  r  Zcloudpickler   r   rL   rw   r   r   r1   rV  )r  r  Zcp_dumpsZcp_loadsr=   r   rB  a2i2r   s2rB   rB   rC   test_dataframe_picklable  s*    


r  c               	   C   s  t ddgd\} }t| tjs$tt|tjs4t| j|jksDttj	| j
t| j
 t|  t|  ttks~tt ddgd\}}|j| jkst|j|jkstt ddgdd\} }t ddgdd\}}t| | t|| tt tj	| j
t| j
 W 5 Q R X t dddgd}dd |D }|| j|jg t|dksbttt t ddgd W 5 Q R X d S )	Nr   *   T皙?皙?c                 S   s   h | ]
}|j qS rB   )r\   )r   r   rB   rB   rC   	<setcomp>  s     z)test_random_partitions.<locals>.<setcomp>r+   )r=   Zrandom_splitr|   rL   rM   r?   r\   rY   ZtestingZassert_array_equalr1   rc   r   rX   rV   r   rj   rk   updaterl   )r.   r/   r
  Zb2partsnamesrB   rB   rC   test_random_partitions  s*    $

 r  c                  C   s>   t jddddddgdd} tj| d	d
}t| |   d S )N+?Cl @Cl@X9v?Zd;@Zd;	@r.   r   r)   rg   )rQ   rR   rL   rw   r   round)r   r   rB   rB   rC   test_series_round  s    r  c            	         s@  dd } t jddddddgtd	d
ddddddgd}t|d  jddddgd}|jdksftt | tt	tj|j
|jdf|jd d  ddgddgdgddgddgddddgddddgfD ]}tt|f fdd	 qt jtjddtdd}tddD ]}t||}t|| ddgdddgdddgddddgdddgddddgdddddgddddddddgfD ]t}|j|d}| || |jt|kstt|| |jj|d}| |j| |jt|kstt|j| q~ddgddddgdddddgfD ]x}|j|dd}| || |jt|ksDtt|| |jj|dd}| |j| |jt|ks~tt|j| qqt jddddddddd dg
dd ddddddddg
d
td!d}tddD ]\}t||}t|| td"td#td$td%td&td'td(td)td!f	D ]t}|j|d}| || |jt|ks`tt|| |jj|d}| |j| |jt|kstt|j| q2td*td+td,fD ]x}|j|dd}| || |jt|kstt|| |jj|dd}| |j| |jt|ks(tt|j| qqd S )-Nc                    sH   dd  j D }t|}t fdd|D }t| | t|   dS )zCheck data is split properlyc                 S   s   g | ]}|d   dr|qS )r   zrepartition-split)
startswithr   krB   rB   rC   r    s      z?test_repartition.<locals>._check_split_data.<locals>.<listcomp>c                    s   g | ]}t tj j|qS rB   )r
   rL   rM   rd   r  r=   rB   rC   r    s     N)rd   rc   rQ   concatr   )origr=   keyssprB   r!  rC   _check_split_data  s    
z+test_repartition.<locals>._check_split_datar'   r(   r)   r*   r+   r,   abdabdrm  rO   r   r1  r2  r3  r4  r0   r  rO   r   r3  r4  r   F   c                    s    j | dS )Nr  )rJ  )divr.   rB   rC   r     r   z"test_repartition.<locals>.<lambda>r3   Zabxyzr&  r4   T)r   forcer2   r~   ZajZajjZadjZabfjZahjjZacdjZadfijZabdefgijZYadijmZacmrxzZYajz)rQ   rM   r   rL   rw   rJ  r   r?   r   r
   rd   r\   r  rj   rk   rl   rY   r   r   r   r  r7   )	r&  r   r/   r*  r   r   r   ZrddfZrdsrB   r+  rC   test_repartition  s    
 
&








$

0




r/  c               	   C   s   t ddgdddgddd} | tjddddftjddddfd	d
dksHtt dddgddddgddd} | tjddddftjddddftjddddftjddddftjd	d
gfdddkstd S )Nr   r,   r.   r/   r   r   FTr/   r   r/   r'   )r0  r1  r   r   r   r'   r'   r)   r3   r*   r  r/   r(   r/   r)   )r0  r1  r4  r5  r2  r3  )r   r(   )r   r   boundary_slicer?   r"  rf  rB   rB   rC   test_repartition_divisionsP  s"    r7  c                  C   s   t jddddddgtddd	d
ddddgd} tj| d	d
ddgd}t|tjsVt|jdksdtt||  tj| j	d	d
ddgd}t|tj
st|jdkstt|| j	 d S )Nr'   r(   r)   r*   r+   r,   r'  rm  rO   r   r1  r2  r3  r4  r0   r  r(  )rQ   rM   r   rL   rJ  r|   r?   r   r   r   rR   r   rB   rB   rC   $test_repartition_on_pandas_dataframee  s     
r8  	use_indexTrx   r   r   zM8[ns]	transformc                 C   s   | S r   rB   r   rB   rB   rC   r   x  r   r   c                 C   s   | j S r   r   r   rB   rB   rC   r   x  r   c                 C   s   t jddddddgd tdd d	t jttd
dd |dd}||}tj||| d}||}t|| |j	|ks~t
ttt|jst
d S )Nr'   r(   r)   r*   r+   r,   rO   r'  rm  r   r1  rW  r0   r  )rQ   rM   r   rR   r   rL   rw   rJ  r   rh   r?   r   r  r   
partitions)r9  rx   r   r   r:  r   r.   r/   rB   rB   rC   test_repartition_npartitionst  s     

r<  partition_sizeZ1kiBi{  c                 C   s   | S r   rB   r   rB   rB   rC   r     r   c                 C   s   | j S r   r   r   rB   rB   rC   r     r   c              
   C   s   t jddddddgd tdd d	t dd
ddddgd d}||}tj||| d}|j|d}t||dd t	|j
tdd dkstt|j| }ttt|std S )Nr'   r(   r)   r*   r+   r,   rO   r'  rm  r   r1  r2  r3  r4  r0   r  )r=  FrX  Tdeepi   )rQ   rM   r   rR   rL   rw   rJ  r   rY   ZalltruerQ  r   rX   r?   rd   get__dask_keys__r   r  r   )r9  rx   r=  r:  r   r.   r/   r  rB   rB   rC   test_repartition_partition_size  s      rB  c                  C   s<   t dtdi} tj| dd}|d}|jdks8td S )Nr7   rO   r(   rg   z1 MiBr'   )rQ   rM   r   rL   rw   rJ  rh   r?   rp  rB   rB   rC   #test_repartition_partition_size_arg  s    
rC  c                  C   sN   t jddddgit dt dt dgd} tj| dd	}|jd
d	 d S )Nr7   r'   r(   r)   r   z2017-05-09 02:45:00.017999r   r0   rg   rO   )rQ   rM   r   rL   rw   rJ  r   rB   rB   rC   (test_repartition_npartitions_same_limits  s    	rD  c                  C   sH   t dtdi} tj| dd}|jdks.t|jdd}t|| dS )z}
    Test that we cover numeric edge cases when
    int(ddf.npartitions / npartitions) * npartitions) != ddf.npartitions
    r7   rp   rt  rg   rF  N)	rQ   rM   r   rL   rw   rh   r?   rJ  r   rp  rB   rB   rC   .test_repartition_npartitions_numeric_edge_case  s
    rE  c                  C   s   t jdddddddgd itd	d d
} tj| dd}|jdd}|jdksRtt||  |jdd}|jdksvtt||  |j	rtd S )Nr7   r'   r(   r)   r*   r+   r,   rO   r'  r0   rg   )
rQ   rM   r   rL   rw   rJ  rh   r?   r   r   rp  rB   rB   rC   test_repartition_object_index  s    *

rF  c                  C   st   t td} t jdd | D dd| _tj| dd}|jdksDtt	| | |
d}|jdksftt	| | d S )	NrO   c                 S   s&   g | ]}t d ddddt|d qS )i  r'   rG  r   )minutesr   re  rB   rB   rC   r    s     z6test_repartition_datetime_tz_index.<locals>.<listcomp>Tutcr(   rg   r+   )rQ   rR   r   to_datetimer1   rL   rw   rh   r?   r   rJ  )r   r   r_  rB   rB   rC   "test_repartition_datetime_tz_index  s     

rK  r      r   Z1DZ7DZ28hZ1hendz
2000-04-15z2000-04-15 12:37:01z2000-01-01 12:37:00start
2000-01-01z2000-01-01 12:30:00c                 C   sj   t |}t |}t j||dd}t jdtt|i|d}tj|| dd}|j	|d}t
|| d S )NZ60s)rN  rM  r   r7   r0   )rh   rP   r   )rQ   r   r   rM   rY   r  r   rL   rw   rJ  r   )rh   r   rN  rM  r   r   r   rC  rB   rB   rC   test_repartition_freq  s    


rQ  c                  C   s   t jdtjdit tjdd d} tj| dd}|jdd}|jd	d
 D ]}||	dksTt
qT|jd | j kst
|jd
 | j kst
t||  d S )Nr7   rO   g   vH7Br0   r)   rg   Z15srP  r'   ri   r   )rQ   rM   rY   r   DatetimeIndexrL   rw   rJ  r   r  r?   r1   minmaxr   )r   r   rC  r*  rB   rB   rC   test_repartition_freq_divisions  s    rU  c               	   C   sl   t ddddgi} tj| dd}tt}|jdd W 5 Q R X dt|j	ksVt
d	t|j	ksht
d S )
Nr7   r'   r(   r)   rg   Z1srP  onlyr    )rQ   rM   rL   rw   rj   rk   r   rJ  r   r   r?   )r   r   rD  rB   rB   rC   test_repartition_freq_errors  s    rW  c               	   C   s   t jdddd} t jtjjddt| dfdtd	| d
}tj	|ddj
dd}t|| |jt dt dt dt dt dt dfkst|jdkstd S )Nz2015-01-01 00:00z2015-05-01 23:50Z10minrP  r   rp   r*   r  ABCDr  r'   rg   MSz2015-1-1 00:00:00z2015-2-1 00:00:00z2015-3-1 00:00:00z2015-4-1 00:00:00z2015-5-1 00:00:00z2015-5-1 23:50:00r+   )rQ   r   rM   rY   r   randintr   r   rL   rw   rJ  r   r   r   r?   rh   )tsr   r   rB   rB   rC   test_repartition_freq_month	  s"      

	r]  c                  C   s   t dt dt dt dg} t j| ddid}tj|ddjdd}t|| |jd	ksdt|j	t dt dt dfkstd S )
Nz2020-1-1z2020-1-2rF   )r1   r   r'   rg   r   rP  r(   )
rQ   r   rM   rL   rw   rJ  r   rh   r?   r   )r1   r   r   rB   rB   rC   test_repartition_freq_day	  s    
r^  zfreq, expected_freq)r!   rZ  )rZ  rZ  )Z2MZ2MS)QZQS)zQ-FEBzQS-FEB)Z2QZ2QS)z2Q-FEB2QS-FEB)r`  r`  )ZBQZBQS)Z2BQZ2BQS)ZSMZSMS)r   AS)zA-JUNzAS-JUN)ZBABAS)Z2BAZ2BAS)ZBYrb  )Yra  )secondsc                 C   s   t | }||kstd S r   )r   r?   )r   Zexpected_freqZnew_freqrB   rB   rC   test_map_freq_to_period_start*	  s    re  c               	   C   sr   t ddddgi} tj| dd}tt |jdd d gd W 5 Q R X tt |jddd	 W 5 Q R X d S )
Nr7   r'   r(   r)   rg   r+   )rh   r   Z5MiB)rh   r=  )rQ   rM   rL   rw   rj   rk   rl   rJ  r   rB   rB   rC   test_repartition_input_errorsF	  s    rf  c                  C   s8  t jddddd dgtdddd	d
dddgd} t| d}t|jd| jd |jd j	dkspt
t|j | j  t|jdd| jdd t|jdd| jdd t|j | j  t|j | j  t| |   t| |   t|jdd t| k s4t
d S )Nr'   r(   r)   r*   r,   r'  rm  rO   r   r1  r2  r3  r4  r0   float32r   frac)rQ   rM   r   rL   rw   r   r7   astyperX   r   r?   r   Zbetweenr>  ZnotnullZisnullr   sampler   r.   rB   rB   rC   'test_embarrassingly_parallel_operationsO	  s    rm  c                     s^  t  } tj| ddd t d| d t jd| jd t j d  | j| d   t jdd| jdd t jjdd| jjdd t jdd| jdd t jjdd| jjdd t jdd	d
| jdd	d
 t jjdd	d
| jjdd	d
 t jdd	d
| jdd	d
 t jjdd	d
| jjdd	d
 t jddd| jddd t jddd| jddd t jdd	dd| jdd	dd t	t
 fdd t	t fdd t	t fdd t  } tj| jd ddf< tj| ddd t	t
 fdd t| jddd
 jddd
 d S )Nr+   Fr  rp   r   padr  bfillr(   )r   limitr'   r   )r   r!  )r   rp  r!  c                      s    j jdddS )Nr   r'   r   )r   fillnarB   r   rB   rC   r   	  r   ztest_fillna.<locals>.<lambda>c                      s    j dddS )Nr   rO   )rp  rq  rB   r   rB   rC   r   	  r   c                      s    j ddddS )Nr   rO   r'   )rp  r!  rr  rB   r   rB   rC   r   	  r   rt  r   c                      s    j dd S )Nrn  r  )rq  rX   rB   r   rB   rC   r   	  r   r)   )r   makeMissingDataframerL   rw   r   rq  r   rW   rj   rk   rl   r  rY   r   r  r   rB   r   rC   test_fillnag	  s<    *" rt  optimizec                    s  t d d }|j| d}|D ]0}| | r4d|j n|jfksBt|j  qt||jks`tt|d jj	| rvdndkstt j
 j| d  fdd|D }|D ]}|j  qtj|||jd}|d d }|j  t|td	 d	 tj
  d	  d S )
Nr'   )Zoptimize_graphzdelayed-r   r)   c                    s   g | ]}|d    qS )r(   rB   re  dmrB   rC   r  	  s     z*test_delayed_roundtrip.<locals>.<listcomp>)rT  r   r(   )r=   
to_delayed__dask_layers__r\   r?   rd   rj  r   rh   layersr.   rW   rL   from_delayedr   r   rV   )ru  r  r	   r7   Zdelayed2Zdf3Zdf4rB   rv  rC   test_delayed_roundtrip	  s"    
 
r|  c               	   C   sL   t jdd } |  g}tj|ttdd}tt |	  W 5 Q R X dS )zAEnsure that the graph is 100% lazily evaluted if meta is providedc                   S   s
   t  d S r   )RuntimeErrorrB   rB   rB   rC   raise_exception	  s    z@test_from_delayed_lazy_if_meta_provided.<locals>.raise_exceptionr+  rS  N)
rd   r	   rL   r{  r}  r  rj   rk   r}  rX   )r~  tasksr   rB   rB   rC   'test_from_delayed_lazy_if_meta_provided	  s    
r  c                  C   s<   t jg ttdd} tddgijd d }t| | d S )Nr+  rS  r.   r  r   )rL   r{  r}  r  rQ   rM   r  r   )r   r^   rB   rB   rC   %test_from_delayed_empty_meta_provided	  s    r  c                  C   sH   t jdd } tj|  |  gtttdd}|j|j|_|	  d S )Nc                   S   s   t tdgtjgdS )N      ?r-   )rQ   rM   r}  rY   NaNrB   rB   rB   rC   r   	  s    z&test_fillna_duplicate_index.<locals>.fr-   rS  )
rd   r	   rL   r{  r}  r  r/   rq  r.   rX   )r   r   rB   rB   rC   test_fillna_duplicate_index	  s
    
r  c                  C   sX   t  } tj| ddd}t|j|j| j| j t|j|j| j| j d S )Nr+   Fr  )r   rs  rL   rw   r   r   rq  r   r   rB   rB   rC   test_fillna_multi_dataframe	  s    r  c               	   C   s   t  } t  }tj| dd}tj|dd}t||| | tj| ddd}tjtdd t||| | W 5 Q R X d S )Nr+   rg   r)   Fr  zNot all divisions are knownrn   )	r   rs  rL   rw   r   rq  rj   rk   rl   )r   r  r   rN  r  rB   rB   rC    test_fillna_dask_dataframe_input	  s    r  c                  C   st   t  } tj| ddd}t| |   t| |   t|jdd| jdd t|jdd| jdd d S )Nr+   Fr  r'   r   )r   rs  rL   rw   r   Zffillro  r   rB   rB   rC   test_ffill_bfill	  s    r  c                  C   s^   t dtjdgdtjdgd} tj| dd}t jddgddgd	}t||| | d S )
Nr'   r)   r  r(   rg   rO   r   rv  r0   )	rQ   rM   rY   r   rL   rw   rR   r   rq  )r   r   r  rB   rB   rC   test_fillna_series_types	  s     r  c                  C   s   t jddddd dgtdddd	d
dddgd} t| d}|jdd}t|| |jddd}|jddd}t|| |jddj|jddjkstd S )Nr'   r(   r)   r*   r,   r'  rm  rO   r   r1  r2  r3  r4  r0   r   rh    ri  random_state)	rQ   rM   r   rL   rw   rk  r   r\   r?   )r   r.   r/   r   r=   rB   rB   rC   test_sample	  s    

r  c                  C   sp   t jddddd dgtdddd	d
dddgd} t| d}|jddd}|j }t|tt	|kslt
d S )Nr'   r(   r)   r*   r,   r'  rm  rO   r   r1  r2  r3  r4  r0   r  F)ri  replace)rQ   rM   r   rL   rw   rk  r1   rX   r   setr?   )r   r.   r/   ZbbrB   rB   rC   test_sample_without_replacement
  s    
r  c               	   C   s   t jddddd dgtdddd	d
dddgd} t| d}tt |jddd}W 5 Q R X |jddd}t	|| t
t |jdd W 5 Q R X t
t |jd d W 5 Q R X d S )Nr'   r(   r)   r*   r,   r'  rm  rO   r   r1  r2  r3  r4  r0   r   r  )r  r  rx   rh  )rQ   rM   r   rL   rw   rj   rs   rt   rk  r   rk   rl   )r   r.   r/   r   rB   rB   rC   test_sample_raises
  s    
r  c                  C   sZ   t ddit d} ttddgitdg idd| d d d g}t|j d d S )Nr7   r:   r  r'   )r6   r8   )r   rQ   rM   rL   r   r7   rT  )rT  r.   rB   rB   rC   test_empty_max$
  s    r  c                  C   sx   t d tddddgdddd	gd
} tj| dd}t|d| d t|jdddid| jdddid d S )Nnumexprr'   r(   r)   r*   r+   r,   r3   r2   rm  rg   zx**2 > yzx**2 > @valuer   )Z
local_dict)rj   r  rQ   rM   rL   rw   r   queryr   rB   rB   rC   
test_query/
  s    
 r  c               	   C   s   t d tddddgdddd	gd
} tj| dd}t| d|d t| jddd|jddd t t	 |jddd W 5 Q R X d S )Nr  r'   r(   r)   r*   r+   r,   r3   r2   rm  rg   zx + yz	z = x + yFr   T)
rj   r  rQ   rM   rL   rw   r   evalrk   r  )r   r=   rB   rB   rC   	test_eval;
  s    
 r  zinclude, excludec              	   C   s   d}t dg| dg| dg| t jd|dd}tj|dd	}|j| |d
}|j| |d
}t|| t|j	
 |j	
  t|j	
 |j	
  d S )NrO   r'   r.   r  z
2016-01-01r   )ZcintZcstrZclfoatZcdtr(   rg   r   )rQ   rM   r   rL   rw   Zselect_dtypesr   r   assert_series_equalr  r  )r   r   rx   r   r.   r_  r^   rB   rB   rC   test_select_dtypesG
  s    

r  c            
   
   C   s$  t ddddgddddgd	} tj| dd
}t|jdjt|jdjksVtt|jdjt|jdjks~tt|j	 jt|j	 jkstt|
dj jt|
dj jkstdd }dd }tt|j|||jjjtt|j|||jjjksttt|j|||jjjtt|j|||jjjksVtddd}ddd}d}d}d}t|j||d|id|i|d}	t|	jtt|j||d|id|i|djkstt|	jtt|j||d|id|iddjkstt|	| j d||   | |  d S )Nr'   r(   r)   r*   r+   r,   r3   r2   rm  rg   r7   c                 S   s
   |  dS )Nr+   nlargestr+  rB   rB   rC   r   o
  r   z=test_deterministic_apply_concat_apply_names.<locals>.<lambda>c                 S   s
   |  dS Nr)   r  r+  rB   rB   rC   r   p
  r   r   c                 S   s   |   | | S r   rU  )r7   c_keyboth_keyrB   rB   rC   chunky
  s    z:test_deterministic_apply_concat_apply_names.<locals>.chunkc                 S   s   t |  | | S r   rQ   rR   rV  )r7   a_keyr  rB   rB   rC   agg|
  s    z8test_deterministic_apply_concat_apply_names.<locals>.aggr  r  )r  	aggregatechunk_kwargsaggregate_kwargsr  )r   r   )r   r   )rQ   rM   rL   rw   rc   r7   r  rd   r?   r  groupbyr   rW   r   r   r   rV  )
r   r.   r   f2r  r  r  r  r  r   rB   rB   rC   +test_deterministic_apply_concat_apply_namese
  s`     (($0




r  c                  C   s   t ddddgddddgd	} tj| dd
}ddd}dd }t|dg||tddd}| d d  }t|| t|jgdd dd d}t	|t
st| | j kstd S )Nr'   r(   r)   r*   r+   r,   r3   r2   rm  rg   r  c                 S   s   | | |   S r   ra   r7   r   constantrB   rB   rC   r  
  s    z"test_aca_meta_infer.<locals>.chunkc                 S   s   |   S r   r  r   rB   rB   rC   r  
  s    z test_aca_meta_infer.<locals>.aggr  r  )r  r  r  c                 S   s   t |  gS r   r  r   rB   rB   rC   r   
  r   z%test_aca_meta_infer.<locals>.<lambda>c                 S   s   |   S r   rU  r   rB   rB   rC   r   
  r   )r  r  )r  )rQ   rM   rL   rw   r   r}  ra   r   r7   r|   r   r?   rX   rV  )r   r   r  r  r   r{  rB   rB   rC   test_aca_meta_infer
  s     

  r  c                     s  t ddgd i} tj| ddddddd	d
ddd  fdd}t|dd t|ddd t|dd |dj |jj kst|d}|d}|j	|j	kstt
|j |j @ t
jkst|d dk sttdg ddd}| dks&ttdg ddd}| dksNttt |d W 5 Q R X tt2 tdg dtddtddtddd W 5 Q R X d S ) Nr7   r'   r4  rt  rg   r   c                 S   s   |   | | S r   rU  r  rB   rB   rC   r  
  s    z#test_aca_split_every.<locals>.chunkc                 S   s   |   | d S r{   rU  r7   r  rB   rB   rC   r  
  s    z%test_aca_split_every.<locals>.combinec                 S   s   |   | d S r   rU  r  rB   rB   rC   r  
  s    z!test_aca_split_every.<locals>.aggc              
      s.   t dg tddtddtdd| dS )Nr  r  r        @)r  r  r  r  combine_kwargsr  r   )r   r}  r  r  r  r  r   rB   rC   r   
  s   z&test_aca_split_every.<locals>.<lambda>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   )rQ   rM   rL   rw   r   rd   r$  rh   r?   r\   r   rX   r   rj   rk   rl   r}  r   r   Zr3Zr4r   rB   r  rC   test_aca_split_every
  sL    


"&r  c                  C   s"  t tdtddd} tj| dd}ddd}d	d }|jj||d
}t|| j  |j||d
}|j	|j||d
j	kst
t||   |j||ddid}|j	|j||ddidj	kst
|j	|j	kst
t|| dk  dd }|j|dd d
}t|t |  |  d d S )Nr3  rp   rm  r*   rg   r   c                 S   s   | |k  S r   rU  )r7   r   rB   rB   rC   r     r   z'test_reduction_method.<locals>.<lambda>c                 S   s   |   S r   rU  r   rB   rB   rC   r     r   )r  r      )r  r  c                 S   s   t |  |  dS )NrV  count)rQ   rM   rV  r  r   rB   rB   rC   sum_and_count  s    z,test_reduction_method.<locals>.sum_and_countc                 S   s   | j dd S )Nr   )level)r  rV  r   rB   rB   rC   r     r   r  )r   )rQ   rM   r   rL   rw   r7   	reductionr   r  r\   r?   rV  )r   r   r  r  r   r  r  rB   rB   rC   test_reduction_method
  s&    
r  c               
      s  t dgd } tj| dddddddd	dd
d  fdd}t|dd t|ddd t|dd |dj |jj kst|d}|d}|j	|j	kstt
|j |j @ t
jkst|d dkstj ddd}| dkstj ddd}| dks@ttt |d W 5 Q R X tt. j dtddtddtddd W 5 Q R X d S )Nr'   r4  rt  rg   r   c                 S   s   |   | S r   rU  r  rB   rB   rC   r  #  s    z0test_reduction_method_split_every.<locals>.chunkc                 S   s   |   | d S r{   rU  r  rB   rB   rC   r  &  s    z2test_reduction_method_split_every.<locals>.combinec                 S   s   |   | d S r   rU  r  rB   rB   rC   r  )  s    z.test_reduction_method_split_every.<locals>.aggc              	      s*   j  tddtddtdd| dS )Nr  r  r  r  )r  r  r  r  r  r   )r  r}  r  r  rB   rC   r   ,  s   z3test_reduction_method_split_every.<locals>.<lambda>r)   r*   Fr+   r  r  )r  r  r  r      )r  r  r      r  r  r  )r  r   r  r  r  )r   )r   )r   )rQ   rR   rL   rw   r   rd   r$  rh   r?   r\   r   rX   r  rj   rk   rl   r}  r  rB   r  rC   !test_reduction_method_split_every  sH    



"&    r  c                  C   sz   t tdtddd} tj| dd}ddd}t|j|d	d
d||d	d
d t|jj|d	d
d||jd	d
d d S )Nr3  rp   rm  r*   rg   r   c                 S   s   | | | S r   rB   r/  rB   rB   rC   r   `  s    ztest_pipe.<locals>.fr'   r(   )r0  )r   )rQ   rM   r   rL   rw   r   piper7   )r   r   r   rB   rB   rC   	test_pipe\  s
    
 r  c                  C   sr   t jdd} tj| ddgd}t|d}|j 	 dksBt
tt||gd}|j 	 dksnt
d S )Nrp   r(   r.   r/   r&  r+   )rY   r   r   rQ   rM   rL   rw   r1   nuniquerX   r?   r"  )arrr   r   rC  rB   rB   rC   test_gh_517g  s    r  c               	   C   s   t ddddgddddgd	d
ddgd} tj| dd}t|jddd| jddd t|jddgdd| jddgdd tt |jddgdd W 5 Q R X t|jddgddd| jddgddd t|jddgd| jddgd d S )Nr'   r(   r)   r*   r+   r,   r3   r2   r4   rO   rF  rG  r/  rg   r   r   r0  r.   r7   r
  )r!  errorsr&  )	rQ   rM   rL   rw   r   r   rj   rk   rl   r   rB   rB   rC   test_drop_axis_1q  s    *&r  rT   r/   c                 C   s`   t ddddgddddgd	}tj|dd
}|j| d}|d d |d< t|j| d| d S )Nr(   r*   r,   r2   Z1aZ2bZ3cZ4dr-   rg   r&  r.   r'   new)rQ   rM   rL   rw   r   r   )rT   r   r   rC  rB   rB   rC   test_drop_columns  s    

r  c                  C   sd   t dtjdtdi} t| d}tt| d t|d  tt| d t|d  d S )Nr7   rO   rW  r(   )	rQ   rM   rY   r  r  rL   rw   r   cosr   rB   rB   rC   
test_gh580  s    r  c                  C   sF   t dtjdtdi} t| d}|d}|d }t|g| d S )Nr7   r)   rW  r'   )	rQ   rM   rY   r  r  rL   rw   	set_indexr   )r   r   Zddf_index_onlyr   rB   rB   rC   test_gh6305  s
    
r  c                  C   s(   ddd} t tj| dtj| d d S )Nr   r   r-   r&  r   r=   r   rV   ZrenamerrB   rB   rC   test_rename_dict  s    
r  c                  C   s&   dd } t tj| dtj| d d S )Nc                 S   s   |   S r   r=  r   rB   rB   rC   r     r   z&test_rename_function.<locals>.<lambda>r&  r  r  rB   rB   rC   test_rename_function  s    r  c                      s    ddi t t fdd d S )Nr   r'   c                      s   t j dS )Nr0   )r=   r   rB   r  rB   rC   r     r   z#test_rename_index.<locals>.<lambda>)rj   rk   rl   rB   rB   r  rC   test_rename_index  s    r  c                  C   s   t jdddd} t jddddgd	d
ddgd| d}tj|dd}t| | ft t|jddd |jdddft t|j	 |j	  t|j	jddd |j	jdddft d S )Nr   1/1/2001z	12/1/2004)r   rN  rM  r'   r(   r)   r*   rO   r   r1  r2  rm  r0   rg   r!   r   )r   r   )
rQ   period_rangerM   rL   rw   r   Zto_timestamp
CHECK_FREQrX   r7   )r1   r   r   rB   rB   rC   test_to_timestamp  s"    $r  c                  C   sN   t jdddgdd} tj| dd}t|  |  t| d|d d S )Nr'   r(   r)   rF   r   rg   bar)rQ   rR   rL   rw   r   to_frame)r   r.   rB   rB   rC   test_to_frame  s    r  as_framec              	   C   s   t jddddddgdd}tj|dd	}| r4| }tjtd
d |d W 5 Q R X tjtdd |d W 5 Q R X d S )Nr'   r(   r)   r*   r+   r,   rF   r   rg   z4 != 2rn   )r'   r(   r)   r*   zUnexpected value)	rQ   rR   rL   rw   r  rj   rk   rl   to_dask_array)r  r   r.   rB   rB   rC   test_to_dask_array_raises  s    r  c                 C   s   t jdddddgdd}tj|dd}| r2| }| }t|tjsJt	|j
}| rvt|dksdt	|d d	kst	nt|dkst	|d
 }t|dkst	tdd |D st	d S )Nr'   r(   r)   r*   r+   rF   r   rg   r  r   c                 s   s   | ]}t |V  qd S r   )rY   isnanre  rB   rB   rC   r     s     z-test_to_dask_array_unknown.<locals>.<genexpr>)rQ   rR   rL   rw   r  r  r|   r  Arrayr?   chunksr   r   )r  r   r.   r_  rB   rB   rC   test_to_dask_array_unknown  s    r  zlengths,as_frame,meta)TFNf4rW  c                 C   st   t jdddddgddd}tj|dd	}|r4| }|j|| d
}t|tjsRt	d}|rb|d }|j
|kspt	d S )Nr'   r(   r)   r*   r+   rF   rx  )rP   r   r  )lengthsrT  )r(   r(   r'   )r  )rQ   rR   rL   rw   r  r  r|   r  r  r?   r  )rT  r  r  r   r.   r_  Zexpected_chunksrB   rB   rC   test_to_dask_array  s    	r  c               	   C   s  t ddddgddddgd	} tj| dd
}dd }t|jjdd dtfd| jdd  t|jdd dd tfd| jdd dd t|jdd dd tfd| jdd dd t	 8 t
dt t|jdd dd| jdd dd W 5 Q R X t	 8 t
dt t|jdd dd| jdd dd W 5 Q R X dd }t|jj|dtfdtfgd| j| t	 , t
dt t|j|| j| W 5 Q R X tt |jdd dd W 5 Q R X tt |jdd dd W 5 Q R X d S ) Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   c                 S   s   | d | d  S Nr7   r   rB   r  rB   rB   rC   r     r   ztest_apply.<locals>.<lambda>c                 S   s   | d S r{   rB   r   rB   rB   rC   r     r   r7   rS  c                 S   s   | d | d  S Nr   r'   rB   ZxyrB   rB   rC   r     r   r!  rT  c                 S   s   | d | d  S r  rB   r  rB   rB   rC   r     r   r   c                 S   s   | d | d  S r  rB   r  rB   rB   rC   r     r   rT   c                 S   s   | d | d  S r  rB   r  rB   rB   rC   r     r   r
  c                 S   s   | d | d  S r  rB   r  rB   rB   rC   r   "  r   c                 S   s   | d | d  S r  rB   r  rB   rB   rC   r   #  r   c                 S   s   | S r   rB   r  rB   rB   rC   r   '  r   c                 S   s   t | | gS r   rQ   rR   r   rB   rB   rC   r   *  r   r   c                 S   s   | S r   rB   r  rB   rB   rC   r   3  r   c                 S   s   | S r   rB   r  rB   rB   rC   r   6  r   r1   )rQ   rM   rL   rw   r   r7   applyr\  ru   rv   r  rt   rj   rk   r  r   r   r,  rB   rB   rC   
test_apply  sB      

0*
$r  c               	   C   s  t ddddgddddgd	} tj| dd
}dd }tt}|j|dd W 5 Q R X t|dksjt	t
jdd}|j|dd tfd W 5 Q R X |rt	tt}|jdd dd W 5 Q R X t|dkst	dt|d jkst	dt|d jkst	d S )Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   c                 S   s   | d | d  S r  rB   r  rB   rB   rC   r   =  r   z"test_apply_warns.<locals>.<lambda>r   Trq   r  c                 S   s   | S r   rB   r   rB   rB   rC   r   H  r   z'x'r   r   )rQ   rM   rL   rw   rj   rs   rt   r  r   r?   ru   rv   r\  r   message)r   r   r,  wrr   rB   rB   rC   test_apply_warns9  s     r  c               	   C   sd   t ddddgddddgd	} tj| dd
}dd }tjtdd |j|dtd W 5 Q R X d S )Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   c                 S   s   | d | d  S r  rB   r  rB   rB   rC   r   R  r   z4test_apply_warns_with_invalid_meta.<locals>.<lambda>zMeta is not validrn   r  )	rQ   rM   rL   rw   rj   rs   r  r  r\  r  rB   rB   rC   "test_apply_warns_with_invalid_metaN  s
     r  c                  C   sn   t ddddgddddgd	} tj| dd
}t|dd | dd  t|dd | dd  d S )Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   c                 S   s   | d S r{   rB   r   rB   rB   rC   r   [  r   ztest_applymap.<locals>.<lambda>c                 S   s   | | fS r   rB   r   rB   rB   rC   r   ]  r   )rQ   rM   rL   rw   r   Zapplymapr   rB   rB   rC   test_applymapX  s     r  c                  C   sf   t dddddgdddddgd	} tj| dd
}t|d| d t|jd| jd d S Nr'   r(   r)   r*   r+   r,   r3   r2   rm  rg   abc)rQ   rM   rL   rw   r   Z
add_prefixr7   r   rB   rB   rC   test_add_prefix`  s    $r  c                  C   sf   t dddddgdddddgd	} tj| dd
}t|d| d t|jd| jd d S r  )rQ   rM   rL   rw   r   Z
add_suffixr7   r   rB   rB   rC   test_add_suffixg  s    $r  c               	      s   t dddddgdddd	d
gdddddgd} tj| dd t j | j  t ddg  | ddg   tt	 fdd tt
 fdd d S )Nr'   r-  r)   r+   g      iirO   r.   r/   r   r=   r   r  r(   rg   r   r   c                      s
    j  S r   )rv  absrB   r   rB   rC   r   y  r   ztest_abs.<locals>.<lambda>c                      s      S r   )r  rB   r   rB   rC   r   z  r   )rQ   rM   rL   rw   r   r   r  rj   rk   rl   r   r   rB   r   rC   test_absn  s    "r  c                  C   sV   t dddgdddgd} tj| dd	}t| |   t|d| d d S )
Nr  r  r  r  r  r  r   r(   rg   )rQ   rM   rL   rw   r   r  r   rB   rB   rC   
test_round}  s    r  c                  C   s  t  } tj| dd}| }|jdd}|d}|jddd}|  }| d}t|| t|| t|| t|| |j| jkst|j|jkst|j|jkst|j|jkst| j}| j	}	tj|dd}
tj|	dd}|
|}|
j|dd}|
|d}|
j|ddd}||	}||	d}t|| t|| t|| t|| |j|
|jksrt|j|jkst|j|jkst|j|jkstd S )Nr,   rg   r(   r  rO   )
r   rs  rL   rw   covr   r\   r?   r   r   )r   r   r   r  res3res4r{  sol2r.   r/   r  dbrB   rB   rC   test_cov  sD    











r  c                  C   s~   t d} | t }tj|dd}| }|jdd}| }t|| t|| |j| jksjt	|j|jkszt	d S Ncudfr,   rg   r(   r  )
rj   r  rw   r   makeDataFramerL   r  r   r\   r?   r  r   r   r   r  r{  rB   rB   rC   test_cov_gpu  s    


r  c            	         s  t  } tj| dd }jdd}jdd}jddd}|  }| jdd}t|| t|| t|| t|| |j jkst|j|jkst|j|jkst|j|jkstt	t
fdd	 | j}| j}tj|dd tj|dd } jdd} jdd} jddd} } jdd}t|| t|| t|| t|| |j jkst|j|jkst|j|jkst|j|jkstt	t
 fd
d	 t	t fdd	 d S )Nr,   rg   r(   r  rO   )min_periods)r  r   c                      s    j ddS NZspearmanr  corrrB   r   rB   rC   r     r   ztest_corr.<locals>.<lambda>c                      s    j ddS r  r	  rB   )r  r   rB   rC   r     r   c                      s
     S r   r	  rB   )r  r   rB   rC   r     r   )r   rs  rL   rw   r
  r   r\   r?   rj   rk   r  r   r   r   )	r   r   r  r  r  r{  r  r.   r/   rB   )r  r   r   rC   	test_corr  sJ    









r  c                  C   s~   t d} | t }tj|dd}| }|jdd}| }t|| t|| |j| jksjt	|j|jkszt	d S r  )
rj   r  rw   r   r  rL   r
  r   r\   r?   r  rB   rB   rC   test_corr_gpu  s    


r  c                  C   sh   t  } tj| dd}|j|jd}|j|j}t|| |jj|jddd}t|| d S )Nr,   rg   r   r(   r  )	r   rs  rL   rw   r   r
  r   r   r   r  rB   rB   rC   test_corr_same_name  s    
r  c               	   C   s   t jtddddgtjddddgd	d
tddddgdt jddddgddd} tj| dd}t| |   t|	 | 	  |j
	|jjjdkst|j
|jjjdkstd S )Nr'   r(   r)   r*   r  r  r  rZ  r  rW  r   rs  r   r0   rg   f8)rQ   rM   rY   r  rU   rL   rw   r   r
  r  r.   r/   r   r   r?   r   rB   rB   rC   test_cov_corr_meta  s    r  c                  C   s\   t jtjdddddgd} tj| dd}t|jd	d
|   t|j	d	d
| 	  d S )Nri   r'   )i -1r(   r.   r/   r&  r3  rg   r2   r  )
rQ   rM   rY   r   uniformrL   rw   r   r  r
  r   rB   rB   rC   test_cov_corr_stable  s    r  c                  C   s  d} t jd| ddtd| tjjd| | dtj| tjjddg| dtjjddtjg| dtjjdd	tjg| ddtjjd
ddddg| dtjjddg| dtjjdddg| dd}t 	|}|d dk|d< |d 
dtj|d< |d d|d< |d t|d< tj|dd}t  | }W 5 Q R X t|jdd|dd t  | }W 5 Q R X t|jdd|dd d S )N  z
2015-01-01Z1Tr   r   r   rX  r'   r  r  rO   r   r1  r2  r3  r.   r/   r   )dates	unique_idZintsZfloatsboolsZint_nansZ
float_nansr  Zint_categoricalcategorical_binarycategorical_nansr  Z	hardboolsr  r  categoryr  rg   r*   r  FrX  )rQ   r   rY   r  r   r[  r   r  r   rM   r  rj  r   rL   rw   r   r
  r   r  )r  r=   r   r   r^   rB   rB   rC   test_cov_corr_mixed&  s2    


r  c                     s   t tjd} tj| dd t d| d t d| d t d| d t jddd| d t	t
 fd	d
 d S )Nrp   rO   rg   r(   r   r-  r)   r  c                      s
     dS Nr  )autocorrrB   dxrB   rC   r   K  r   ztest_autocorr.<locals>.<lambda>)rQ   rR   rY   r   rL   rw   r   r  rj   rk   r   r   rB   r  rC   test_autocorrD  s    r  c               	   C   s  t ddddgddddgd	} tj| dd
}dd }t   tdt |j|dd}W 5 Q R X t	|tjstt
t|jt ddg t|| j|dd t $ tdt |jdd dd}W 5 Q R X t	|tjst
|jd kst
t|| jdd dd dd }t  tdt |j|}W 5 Q R X t	|tjsNt
t|jt ddg t|| j| t " tdt |jdd }W 5 Q R X t	|tjst
|jdkst
t|| jdd  d S )Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   c                 S   s   t j|  |  gddgdS )NrV  rW   r0   )rQ   rR   rV  rW   r   rB   rB   rC   	return_dfR  s    z+test_apply_infer_columns.<locals>.return_dfr
  r   rV  rW   c                 S   s   dS r{   rB   r   rB   rB   rC   r   a  r   z*test_apply_infer_columns.<locals>.<lambda>c                 S   s   dS r{   rB   r   rB   rB   rC   r   d  r   c                 S   s   t j| d | d gddgdS )Nr(   r)   x2x3r0   r  r   rB   rB   rC   
return_df2f  s    z,test_apply_infer_columns.<locals>.return_df2r!  r"  c                 S   s   dS r{   rB   r   rB   rB   rC   r   t  r   r7   c                 S   s   dS r{   rB   r   rB   rB   rC   r   w  r   )rQ   rM   rL   rw   ru   rv   r  rt   r  r|   r?   r   rS   rT   rU   r   rR   rP   r7   )r   r   r   r_  r#  rB   rB   rC   test_apply_infer_columnsN  s8     



r$  c                  C   s\   t  } tj| dd}dt|jks(tt|jjt	
| jj t|jjt	
| jj d S )Nr)   rg   day)r   ZmakeTimeSeriesrL   rw   r   r1   r?   r   r%  rQ   rU   month)r  r.   rB   rB   rC   test_index_time_propertiesz  s
    r'  c                  C   sp  ddl m}  ttjdt| d d tjddd}t	j
|dd}dD ]}||fd	d
}|||dd}|||dddd}|||dd}t|| t|| |j|jkst|||dddg}|||dddgdd}|||dddg}t|| t|| |j|jkst||j|d}||j|ddd}||j|d}t|| t|| |j|jksRtqRd S )Nr   ascii_lowercaser   r^  r   r)   rg   )r  	nsmallestc                 _   s   t | |||S r   getattr)r   margskwargsrB   rB   rC   r     r   z)test_nlargest_nsmallest.<locals>.<lambda>r+   r.   r(   r  r   )r  r)  rQ   rM   rY   r   Zpermutationr   rj  rL   rw   r   r\   r?   r.   )r)  r   r   r-  r   r   r  r{  rB   rB   rC   test_nlargest_nsmallest  s8    







r0  c                  C   s$  t ddddgddddgd	} tj| dd
}|  }| }tdd |jD sVtt||dd | jdd}|jdd}tdd |jD stt||dd | j	 }|j	 }tdd |jD stt||dd | j	jdd}|j	jdd}tdd |jD stt||dd d S )Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   c                 s   s   | ]}|d kV  qd S r   rB   r   r=   rB   rB   rC   r     s     z#test_reset_index.<locals>.<genexpr>Fr  Tr   c                 s   s   | ]}|d kV  qd S r   rB   r1  rB   rB   rC   r     s     c                 s   s   | ]}|d kV  qd S r   rB   r1  rB   rB   rC   r     s     c                 s   s   | ]}|d kV  qd S r   rB   r1  rB   rB   rC   r     s     )
rQ   rM   rL   rw   reset_indexr   r   r?   r   r7   )r   r   r{  r   rB   rB   rC   test_reset_index  s$     

r5  c                  C   s2   t jtdtdiddj } | jdd d S )Nr.   rO   r(   rg   )Zbogus_keyword)rL   rw   rQ   rM   r   r.   rV  rX   r   rB   rB   rC   %test_dataframe_compute_forward_kwargs  s    "r6  c               	   C   sx   t ddddg} tj| dd}tjtdd d|k}W 5 Q R X |sJttjtdd d	|k}W 5 Q R X |rttd S )
Nr.   r/   r   r=   r(   rg   zHUsing the ``in`` operator to test for membership in Series is deprecatedrn   r   )rQ   rR   rL   rw   rj   rs   r  r?   )r   r   outputrB   rB   rC   Atest_contains_series_raises_deprecated_warning_preserves_behavior  s    r8  ziteritems has been removedc               	   C   s   t dddddgi} tj| dd}tttdd | d  }W 5 Q R X tttdd |d  }W 5 Q R X t||D ]\}}||kszt	qzd S )	Nr7   r'   r(   r)   r*   rg   ziteritems is deprecatedr  )
rQ   rM   rL   rw   r%   r   r  	iteritemsr   r?   )r   r   Zpd_itemsZdd_itemsr.   r/   rB   rB   rC   test_series_iteritems  s         r;  c                  C   sP   t dddddgi} tj| dd}t| d |d D ]\}}||ks6tq6d S )Nr7   r'   r(   r)   r*   rg   )rQ   rM   rL   rw   r   r?   )r   r   r.   r/   rB   rB   rC   test_series_iter  s    r<  c                  C   sb   t ddddgddddgd	} tj| dd
}t|  | D ]\}}t|d |d  q@d S Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   )rQ   rM   rL   rw   r   Ziterrowsr   r  r   r   r.   r/   rB   rB   rC   test_dataframe_iterrows  s     r?  c                  C   sZ   t ddddgddddgd	} tj| dd
}t|  | D ]\}}||ks@tq@d S r=  rQ   rM   rL   rw   r   
itertuplesr?   r>  rB   rB   rC   test_dataframe_itertuples  s     rB  rm  )r7   r7   r8   r9   )letterr   )r  c                 C   s~   t jddgddgddgddgg| d	}tj|dd
}t| | D ]2\}}|d |d ksbtt|d |d   qFd S )Nr'   rO   r(   r   r)   r1  r*   r2  r&  rg   r   )	rQ   rM   rL   rw   r   itemsr?   r   rX   )rT   r   r   r.   r/   rB   rB   rC   test_dataframe_items  s
    	&rE  c                  C   sb   t ddddgddddgd	} tj| dd
}t| jdd|jddD ]\}}||ksHtqHd S )Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   Fr0   r@  r>  rB   rB   rC   *test_dataframe_itertuples_with_index_false  s     "rF  c                  C   sv   t ddddgddddgd	} tj| dd
}t| jd d|jd dD ](\}}||ks\tt|t|ksHtqHd S )Nr'   r(   r)   r*   rO   r   r1  r2  rm  rg   r   )rQ   rM   rL   rw   r   rA  r?   rA  r>  rB   rB   rC   (test_dataframe_itertuples_with_name_none  s
     "rG  c                  C   sl   t jdddd gddddgdddddgd	} t| d}t|t| t t|jt| jt d S )
Nr'   r(   r)   rO   r   r1  r2  rm  r0   )rQ   rM   rL   rw   r   rj  r  r7   rl  rB   rB   rC   test_astype#  s     
rH  c               	   C   s   t dddddgdddddgddd	d
dgd} | ddi} t| d}|jjjsXt|ddi}|j	jjrtt|jjjst|j	j
dkst| j	j
dkst|j	d}|jjrt|j
dkst| j
dkstd S )Nr.   r/   r   r7   r   r0  r'   r(   r)   r*   r+   r/  r  )rQ   rM   rj  rL   rw   r   catknownr?   r7   r   rX   )r   r   rC  r  rB   rB   rC   test_astype_categoricals-  s$    rK  c            
   
   C   s  t dddddgdddddgdddddgddd	d
dgd} t| d}t jjjdddgdd}t jjjdd}|||ddd}dD ]6\}}t||}t jj	|j
st|jj|kstqd|df|dffD ]8\}}|j|}	t jj	|	j
st|	jj|kstqd S )Nr.   r/   r   r7   r   r0  r'   r(   r)   r*   r+   )r7   r   r0  otherF)Zorderedr  r  ))r7   T)r   F)r0  F)r  FT)rQ   rM   rL   rw   apitypesZCategoricalDtyperj  r,  Zis_categorical_dtyper   r?   rI  rJ  r7   )
r   r   r  r  rC  r   rJ  r7   r   Zdx2rB   rB   rC   test_astype_categoricals_knownE  s&    
rO  c                  C   s   t jdddd gddddgddddd	gd
} t| d}dd }t| |j ||j  t| j| |j|  d S )Nr'   r(   r)   rO   r   r1  r2  rm  r*   r0   c                 S   s   | d dkS )Nr(   r   rB   r   rB   rB   rC   isevenf  s    z%test_groupby_callable.<locals>.iseven)rQ   rM   rL   rw   r   r  r   rV  )r.   r/   rP  rB   rB   rC   test_groupby_callableb  s
    ,"rQ  c                  C   sP   t dddddgi} tj| dd} | jdd j| jd	d jksLtd S )
Nr7   r'   r(   r)   r*   rg   c                 S   s   t |  S r   )rQ   rR   rS  r   rB   rB   rC   r   q  r   z3test_methods_tokenize_differently.<locals>.<lambda>c                 S   s   t |  S r   )rQ   rR   rT  r   rB   rB   rC   r   r  r   )rQ   rM   rL   rw   r7   rQ  r\   r?   r   rB   rB   rC   !test_methods_tokenize_differentlym  s    rR  c                 C   s   ddl m} t| tjstt|tjs,t| |  }}| j||d |j|d|d | }| }|	t
t|t
t| }||kstd S )Nr   StringIO)bufmemory_usageT)rU  verboserV  )iorT  r|   rQ   rM   r?   rL   rD  getvaluer  r   rA  )r   r   rV  rT  Zbuf_pdZbuf_daZ	stdout_pdZ	stdout_darB   rB   rC   _assert_infov  s    rZ  c                  C   s   ddl m}  tt_tjddddgddddgdddddgdt g}|D ]}tj|dd	}t	|| qJ|  }tjtjddddgddddgdt
dddd	}|j|d
d | dkst|jd dd kstd S )Nr   rS  r'   r(   r)   r*   rm  r0   rg   FrU  rW  zS<class 'dask.dataframe.core.DataFrame'>
Columns: 2 entries, x to y
dtypes: int64(2))rU  )rX  rT  r$   pandas_format
_put_linesrQ   rM   rL   rw   rZ  r   rD  rY  r?   )rT  Ztest_framesr   r   rU  rB   rB   rC   	test_info  s$    *&r^  c                  C   s   ddl m}  tt_tddddgddddgddddgd}tj|dd}|	d	d
g
 }t| |dd |  }|j|dd | dkst|	d	d
gddg}t| |dd |  }|j|dd d}| |kstd S )Nr   rS  r'   r(   r)   r*   r  rg   r   r   T)rV  F)rW  zS<class 'dask.dataframe.core.DataFrame'>
Columns: 1 entries, C to C
dtypes: int64(1)r  rV  zk<class 'dask.dataframe.core.DataFrame'>
Columns: 2 entries, ('C', 'count') to ('C', 'sum')
dtypes: int64(2))rX  rT  r$   r\  r]  rQ   rM   rL   rw   r  rV  rZ  rX   rD  rY  r?   r  )rT  r   r   r   rU  r^   rB   rB   rC   test_groupby_multilevel_info  s$    *r_  zneed newer version of Pandasc                     s   ddl m}  tt_tjddddgttdttddddddgd	  fd
d}t	j
|dddgddddgddg}|  }|j|dd t d dkrd}nd}d|}| |kstd S )Nr   rS  r'   r(   r)   r*   Zaabcr/  r0   c                    s   | \}} j || S r   )r  )ZboundsrN  stopr   rB   rC   myfunc  s    z$test_categorize_info.<locals>.myfuncr   r'   r'   r(   )r(   r*   r  r   Tr[  32bitz312.0z496.0aY  <class 'dask.dataframe.core.DataFrame'>
Int64Index: 4 entries, 0 to 3
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   x       4 non-null      int64
 1   y       4 non-null      category
 2   z       4 non-null      object
dtypes: category(1), object(1), int64(1)
memory usage: {} bytes
)rX  rT  r$   r\  r]  rQ   rM   rR   r   rL   Zfrom_mapZ
categorizerD  platformarchitecturer   rY  r?   )rT  ra  r   rU  rV  r^   rB   r   rC   test_categorize_info  s0    &

	rg  c                  C   sr   t ddgddgg} tj| dd}|j|d td}t|| j| d td |jd	 t	
tksntd S )
Nr  r  34r(   rg   r'   r   r   )rQ   rM   rL   rw   rw  rj  r\  r   r  rY   r   r?   r   r   rC  rB   rB   rC   test_gh_1301  s
    rl  c                  C   s<   t  } tj|  dd}d| j_t|jdddd|  d S )Nr(   rg   r1   T)rc   r   )	r   r   rL   rw   r4  r1   rP   r   r  r   rB   rB   rC   test_timeseries_sorted  s    rm  c               	   C   s   t  } tj|  dd}tjtdd |dgg W 5 Q R X tjtdd ||dg  W 5 Q R X tjt	dd |d W 5 Q R X tjt	dd |d	 W 5 Q R X d S )
Nr(   rg   z"You tried to index with this indexrn   r   zYou tried to index with a framezhas no columnrF   r   )
r   r   rL   rw   r4  rj   rk   r  r  KeyErrorr   rB   rB   rC   test_index_errors  s    ro  
null_valuec              	   C   sf   t ddddgddddgd}tj|dd}tjtd	d
  ||d d| d W 5 Q R X dS )z9Setting the index with some non-numeric null raises errorr'   r(   r)   r*   rF   r  )numericnon_numericrg   zpresence of nullsrn   rr  )rF   r  N)	rQ   rM   rL   rw   rj   rk   r  r  r  )rp  r   r   rB   rB   rC   test_index_nulls  s    rs  c               	   C   s   t ddddgddddgdd} tj| dd}tjtd	d
 ||j}W 5 Q R X ||ksft	tjtd	d
 |jddd}W 5 Q R X ||kst	dS )z4Setting the index with the existing index is a no-opr'   r(   r)   r*   r   rm  r7   rg   zthis is a no-oprn   Fr3  N)
rQ   rM   r  rL   rw   rj   rs   rt   r1   r?   rk  rB   rB   rC   test_set_index_with_index%  s    &rt  c                  C   sr   t ddddgddddgd} tj| dd}| }|j|j |d< | j| j | d< t| | d|jksnt	d S )	Nr'   r(   r)   r*   r   rm  rg   r0  )
rQ   rM   rL   rw   copyr7   r   r   rT   r?   )r   r   r#  rB   rB   rC   test_column_assignment1  s     
rv  c               	   C   s  t tjjddtjjddd} tj| dd}| }ttjjdd}t	j
|dd}|| d< ||d< t| | d|jkstttjjd	d}t	j
|dd}d
}tjt|d ||d< W 5 Q R X ttjjdd}t	j
|dd}d}tjt|d ||d< W 5 Q R X d S )Nr3  rX  rm  r(   rg   r  r  r0  )r3  r3  z)Array assignment only supports 1-D arraysrn   rO   z!Number of partitions do not match)rQ   rM   rY   r   normalrL   rw   ru  r  r  Z
from_arrayr   rT   r?   rj   rk   rl   )r   r   r#  r  darrr   rB   rB   rC   test_array_assignment<  s&    $
rz  c                  C   s   t dddddgi} tj| dd}| j| jd | jd d}|dd	g | d
dg< |j|jd |jd d}|dd	g |d
dg< t| | d S )Nr7   r'   r(   r)   r*   rg   )r   r0  r   r0  r.   r/   )rQ   rM   rL   rw   rw  r7   r   )r   r   rB  rC  rB   rB   rC   test_columns_assignmentV  s    r{  c                  C   s^   t dddddgdddd	d
gd} tj| dd}|j|j |_t|| j| j| j d d S )Nr'   r(   r)   r*   r+   r  r  r  rZ        @rm  rg   rj  )rQ   rM   rL   rw   r7   r   r   rw  r   rB   rB   rC   test_attribute_assignmentc  s    $r}  c                  C   sT   t jtdtdidd} t jtjtddddd}|| d< t| dksPtd S )	Nr   rG  r)   rg   r   r   r*   rv  )rL   rw   rQ   rM   r   rR   r   r?   r-   rB   rB   rC   test_setitem_triggering_realignk  s    r~  c                  C   sn   t dddddgdddd	d
gd} tj| dd}| jdC  _t|j| jd  t|| j| jd d d S )Nr'   r(   r)   r*   r+   r  r  r  rZ  r|  rm  rg   r   rj  )rQ   rM   rL   rw   r   r   rw  r   rB   rB   rC   test_inplace_operatorsr  s
    $r  r$  r   rp   rX  Z20150101r   c              	   C   sP  t jtjddtd| d}tj|jjd< tj|j	jd< t
j|dd}ttj|d	kt| t jf }tjd
d t|jd|d|jd|d t|jd|d|jd|d t|j|d|j|d|d t|j|d|j|dd|d |j|dj|j|ddjkstt|j|d|j|d|d t|j|d|j|dd|d |j|dj|j|ddjksvtt|jj|d|jj|d t|jj|d|jj|dd |jj|dj|jj|ddjkstt|jj|d|jj|d t|jj|d|jj|dd |jj|dj|jj|ddjksBtW 5 Q R X d S )Nrp   r+   r   r     N   r)   rg   FTrq   r'   r%  r#  )check_dtyper(   r$  r   )rQ   rM   rY   r   r   r   r   r/   r  r=   rL   rw   r   r   ZPANDAS_GT_133r|   rR  ru   rv   r   idxmaxidxminr\   r?   r.   )r   r$  r   r   r  rB   rB   rC   test_idxmaxmin|  sp    

 
 

 
 
  r  c               	   C   s<  t dddgdddgtjgd ddtjgd} | jd d }ttj| ddgtj|ddgd  }d	D ] }t|j	|dd
| j	|d qlt|dddg j	|dd
| dddg j	|d t|j
jdd| j
  ttj|ddgd }tt |   W 5 Q R X tt |j
   W 5 Q R X d S )Nr'   r(   r)   r  rI  r   rg   rO   r   r  r#  r.   r/   r=   r  )rQ   rM   rY   r  r  rL   r"  rw   r   r  r/   r  rj   rk   rl   rX   )r   emptyr   r$  rB   rB   rC   test_idxmaxmin_empty_partitions  s*    (r  c                  C   s\   dddgdddgd} t j| ddgd}tj|dd	}t|j|jdk |j|jdk  d S )
Nr.   r/   r   r'   r   r   r   r  rg   )rQ   rM   rL   rw   r   r   r   r   r   r   rB   rB   rC   test_getitem_meta  s    r  c                  C   sZ   t dddgdddgd} tj| dd}t| d |d  t| ddg |ddg  d S )Nr'   r(   r)   )r   r   r  rg   r   r  rQ   rM   rL   rw   r   r  rB   rB   rC   test_getitem_multilevel  s    r  c                  C   sR   t dttdi} tj| dd}G dd dt}|d}t| | ||  d S )Ncolumn_1rO   r)   rg   c                   @   s   e Zd ZdS )z5test_getitem_string_subclass.<locals>.string_subclassN)rG   rH   rI   rB   rB   rB   rC   string_subclass  s   r  )rQ   rM   r   r   rL   rw   r   r   )r   r   r  r  rB   rB   rC   test_getitem_string_subclass  s
    r  col_typec                 C   sN   t ddgddgddgd}t|d}| dd	d
g}t|| ||  d S )Nr'   r(   r)   r*   r+   r,   r  rv  r   r   r  )r  r   r   colsrB   rB   rC   test_getitem_column_types  s    r  c                  C   sH   t ddgddgddgd} t| d}t| | dk ||dk  d S )Nr'   r(   r)   r*   r+   r,   r  r  r   rB   rB   rC   'test_getitem_with_bool_dataframe_as_key  s    r  c                  C   sF   t jttdtdd} tj| dd}t| ddg |ddg  d S )NrO   r~   r0   r)   rg   r.   r/   )rQ   rR   r   r   rL   rw   r   r   rB   rB   rC   test_getitem_with_non_series
  s    r  c                  C   sR   t dgdgd} tj| dd}| }d|ks6td|ksBtd|ksNtd S )Nr'   r(   r-   rg   r.   r/   r   )rQ   rM   rL   rw   Z_ipython_key_completions_r?   )r   r   ZcompletionsrB   rB   rC   test_ipython_completion  s    r  c                     sR  t jtjddtdd} t| d t 	 | 	  t 	d| 	d t 	d| 	d t 	d| 	d t j	ddd	| j	ddd	 t j
	 | j
	  t j
	d| j
	d t j
	d| j
	d t j
	d| j
	d  	dj 	djkst 	dj 	d
jks:ttt fdd d S )Nrp   r+   r   r&  r   r(   r-  r'   r   r)   c                      s
     dS r  )diffrB   r   rB   rC   r   -  r   ztest_diff.<locals>.<lambda>)rQ   rM   rY   r   r   r   rL   rw   r   r  r.   r\   r?   rj   rk   r   r   rB   r   rC   	test_diff  s    r  c               	   C   s  t  } tj| dd}t| |   t|d| d t|d| d t|d| d t|jddd| jddd t|j | j  t|jd| jd t|jd| jd t|jd| jd tt	 |d W 5 Q R X d S )	Nr*   rg   r   r(   r-  r'   r   r  )
r   r   rL   rw   r   r  r   rj   rk   r   r   rB   rB   rC   
test_shift0  s    r  zdata_freq,divs1)r   F)r   T)HTc           	      C   s   t  }|t jd| d}tj|dd}ddtjddd	d
ffD ]`\}}||f|j|jf|j	|j	ffD ]8\}}|j
d|d}t||j
d|d |j|kshtqhqB|j	
d}t||j	
d |j|kstd S )Nr1  rP  r*   rg   )ST)WFrO   hunitTr(   )r   r   r  ZmakeDateIndexrL   rw   rQ   	Timedeltar   r1   r  r   r   r?   )		data_freqZdivs1r   r   r   Zdivs2r=   r   r   rB   rB   rC   "test_shift_with_freq_DatetimeIndexF  s     &r  zdata_freq,divsc              	   C   s   t  }|tjdd| d}tj|dd}||f|j|jffD ]8\}}|jd| d}t	||jd| d |j
|ks@tq@|jd}t	||jd |j
|kstt  }tt |jjddd W 5 Q R X d S )	NrO  r1  r  r*   rg   r(   rP  r   )r   r   r  rQ   r  rL   rw   r   r  r   r   r?   r1   rj   rk   rl   )r  Zdivsr   r   r=   r   r   rB   rB   rC    test_shift_with_freq_PeriodIndexV  s    r  c               	   C   s   t  } dD ]}| t jd|d} tj| dd}dtjddd	fD ]X}|| f|j| jf|j	| j	ffD ]4\}}|j
d
|d}t||j
d
|d |jsftqfqD|j	
d
}t|| j	
d
 |jstqd S )N)Tr   r  r1  rP  r*   rg   r  rO   r  r  r(   )r   r   r  ZmakeTimedeltaIndexrL   rw   rQ   r  r   r1   r  r   r   r?   )r   r  r   r   r=   r   r   rB   rB   rC   #test_shift_with_freq_TimedeltaIndexj  s    &r  c                     sV   t  } tj| dd tt fdd tt fdd tt fdd d S )Nr*   rg   c                      s    j dddS Nr(   r  rP  )r  rB   r   rB   rC   r     r   z-test_shift_with_freq_errors.<locals>.<lambda>c                      s    j jdddS r  r  rB   r   rB   rC   r     r   c                      s    j dS r   )r1   r  rB   r   rB   rC   r     r   )r   r  rL   rw   rj   rk   r  r   rB   r   rC   test_shift_with_freq_errors{  s
    r  r  r  c           	         s    fdd}ddg}ddddd	d
ddg}|D ]}t jdd|dd d d }t jtjt|df|ddddgd}tj|dd}|D ]4}t|||||| t||j	|||j	| qq,d S )Nc                    s   t |  |S r   r+  )r7   offsetr  rB   rC   r     r   z%test_first_and_last.<locals>.<lambda>Z12hr   Z0dZ100hZ20dZ20BZ3WZ3MZ400dZ13Mz1/1/2000r  rP  r*   r   r   rv  r  rO   rg   )
rQ   r   rM   rY   r   r   rL   rw   r   r   )	r   r   Zfreqsoffsetsr   r1   r   r   r  rB   r  rC   test_first_and_last  s      
r  r   r  c                 C   s   ddl m} ttjjt|ddd}tj	|| d}|j
||d}||j| }ddlm} ||\}	}
td	d
 |	 D | kst|j|pdkstt|jddt|
 kstd S )Nr   r(  r  T)r  rg   )r   r  )get_depsc                 S   s   g | ]\}}|s|qS rB   rB   )r   r   r  rB   rB   rC   r    s      z*test_hash_split_unique.<locals>.<listcomp>r'   r  rc  )r  r)  rQ   rR   rY   r   r  r   rL   rw   r  Z__dask_optimize__rd   rA  Z	dask.corer  r   rD  r?   rh   rc   rX   )rh   r   r  r)  r   r   Zdroppedrb   r  dependenciesZ
dependentsrB   rB   rC   test_hash_split_unique  s    r  c                 C   s  t t dgd d d d f }| }t t dgd d d d f }t jd}|| || || tjt j|||gddddd	gd
}t	j
|dd}td dd	ggddgD ]@\}}|j||d}	|j||| dd}
|
jdkstt|	|
 qd S )NrO   rp   r   r3  r'   r   r7   r   r0  r&  rg   r  r  )r   r  )r   r  r   r  )rY   Zconcatenater  ru  r   ZRandomStateshufflerQ   rM   rL   rw   r   r  rh   r?   r   )r   r7   r   r0  rsr   r   r   r  r{  r   rB   rB   rC   test_split_out_drop_duplicates  s&    ""


$   r  c                 C   s`   t ddddgd i}tj|dd}|jjd| d	jdks@tt|jjd| d	|j  d S )
Nr7   r'   r(   r)   rp   r+   rg   rO   )r  r   )	rQ   rM   rL   rw   r7   r  rh   r?   r   )r   r   r   rB   rB   rC   test_split_out_value_counts  s     r  c                  C   s   ddl m}  tjddddgddd	d
gdtjddddgddd}t|d}| |j|j | |jj|jj | |j	j|j	j | |j
j|j
j d S )Nr   r   r.   r/   r   r=   r(   r)   r*   r+   rm  r  r  r  rZ  r   r   r0   )dask.array.utilsr   rQ   rM   rU   rL   rw   r  r7   r   r1   )r   r   r   rB   rB   rC   r     s    r   c               
   C   s   t ddddgi} tj| dd}| }|jdd}|jd |d< t||  t||  d	}d
D ]*}tjt	|d |j|d W 5 Q R X q`d S )Nr7   r'   r(   r)   rg   Fr>  r   zfThe `deep` value must be False. This is strictly a shallow copy of the underlying computational graph.)TN rn   )
rQ   rM   rL   rw   ru  r7   r   rj   rk   rl   )r   r.   r/   r   Zdeep_errr?  rB   rB   rC   	test_copy  s    

r  c                  C   sn   t jddddgddddgd	t jd
dddgddd} t| d}| }|d= t||  | d= t||  d S )Nr.   r/   r   r=   r(   r)   r*   r+   rm  r  r  r  rZ  r   r   r0   r7   )rQ   rM   rU   rL   rw   ru  r   rp  rB   rB   rC   test_del  s    
r  r1   r?  c                 C   sf   t jdddgdddgddd	gd
dddgd}tj|dd}|j| |d}|j| |d}t|| d S )Nr'   r(   r)   r  r  r  r.   r/   r   r/  r0   rg   r1   r?  )rQ   rM   rL   rw   rV  r   r1   r?  r   r   r^   r_  rB   rB   rC   test_memory_usage_dataframe  s    r  c                 C   sV   t jddddgddddgd	}tj|dd
}|j| |d}|j| |d}t|| d S )Nr'   r(   r)   r*   r.   r/   r   r=   r0   rg   r  )rQ   rR   rL   rw   rV  r   )r1   r?  r   r   r^   r_  rB   rB   rC   test_memory_usage_series  s
    r  c                 C   sV   t jddddgddddgd	}tj|dd
}|jj| d}|jj| d}t|| d S )Nr'   r(   r)   r*   r.   r/   r   r=   r0   rg   r>  )rQ   rR   rL   rw   r1   rV  r   )r?  r   r   r^   r_  rB   rB   rC   test_memory_usage_index  s
    r  c              	      s   t dddddgdddd	d
gdddddgd}tj|dd}t  fdd|jD }|j d}t|| t  fdd|jD }|jj d}t|| d S )Nr'   r(   r)   r*   r+   r  r  r  rZ  r|  r.   r/   r   r=   r   r/  rg   c                 3   s$   | ]}|  j d  V  qdS r  N)rX   rV  rV  r   partr?  r1   rB   rC   r   +  s   z2test_memory_usage_per_partition.<locals>.<genexpr>r  c                 3   s"   | ]}|j  j d V  qdS r  )r7   rX   rV  r  r  rB   rC   r   3  s    )	rQ   rM   rL   rw   rR   r;  Zmemory_usage_per_partitionr   r7   r  rB   r  rC   test_memory_usage_per_partition  s"    
r  r  rV  rW   r[   rZ   r  rS  rT  r  r  r  r   Zsemc                 C   s`   t dddddgdddd	d
gd}tj|dd}t|t||  d  |t||  d   d S )Nr'   r(   r)   r*   r+   皙?皙@ffffff
@皙@      @rm  rg   )rQ   rM   rL   rw   r   r,  )r  r   r   rB   rB   rC   $test_dataframe_reductions_arithmetic:  s    $ r  c                  C   s   dddgdddgdddgdddgg} t j| d	d
d
gd}tj|dd}t| |  t|j |j td t jddgd}tj|dd}t| | dd d S )NZTomrO   r3   ZFarahn   ZJulier+   ZNickNameZNumr&  r)   rg   )Zcheck_namesr.   r/   r'   Fr2  )rQ   rM   rL   rw   r   moder  r   r  rB   rB   rC   test_dataframe_modeT  s    $r  c               
   C   s   t dddddgdddd	d
gd} tj| dd}t|jdd| jdd tj| dd}t|jdd| jdd t|jdd| jdd t|j | j  dD ]*}tjt	dd |j|d W 5 Q R X qtjt	dd |j  W 5 Q R X d S )Nr'   r(   r)   r*   r+   r  r  r  r  r  rm  rg   r   r   )Nr   Zrowsz+See the `median_approximate` method insteadrn   )
rQ   rM   rL   rw   r   medianr7   rj   rk   r  )r   r   Z
ddf_singler!  rB   rB   rC   test_mediane  s$    $  r  c                 C   s|   t tdtddd}tj|dd}trHt|j| d| dd n0|j| d}| }|| 	 dk 
  sxtd S )	Nrp      rm  rO   rg   r  r'   )Zatol)rQ   rM   r   rL   rw   r   r   Zmedian_approximater  r  r   rX   r?   )r   r   r   r_  r^   rB   rB   rC   test_median_approximate}  s    

r  c                  C   s   t dd} t jtjt| df| d}tj|dd}t|j	d d |j	d d  t|j	dd  |j	dd   t|d j	d d |d j	d d  t|d j	dd  |d j	dd   d S )	Nz
01.01.2015z
05.05.2015r(   r0   r+   rg   z
02.02.2015r   )
rQ   r   rM   rY   r   r   rL   rw   r   r   )ZdtRanger   r   rB   rB   rC   test_datetime_loc_open_slicing  s    &r  c               
   C   s
  t ddgddgddgd} d| j_tj| dd	}tt | t| t d
ddgd }|j	|_tj|ddd}tt j|ddtj|dd tt j|jddtj|jdddd tt j|ddtj|dd dD ](}t
jtdd t| W 5 Q R X qd S )Ni  i  r(   r)   r*   r+   )yearr&  r%  ixrg   z	3/11/2000z	3/12/2000z	3/13/2000rp   rO   Fr  T)Zinfer_datetime_formatrX  rH  )z
2021-08-03i  znon-index-able argumentsrn   )rQ   rM   r1   rP   rL   rw   r   rJ  rR   r  rj   rk   r  )r   r   r   r   argrB   rB   rC   test_to_datetime  s.    r  c               	   C   s   t td} tj| dd}tt | t| tt j| ddtj|dd t dddg} tj| dd}tt j| dd	tj|dd	 t d
ddg} tj| dd}tt | t| trtj	t
dd tj|dd  W 5 Q R X d S )NrO   r(   rg   r  r  r'   zthis will errorZcoerce)r  r  z1 day 2 hoursz6unit must not be specified if the input contains a strrn   r   )rQ   rR   r   rL   rw   r   Zto_timedeltar   rj   rk   rl   rX   r   rB   rB   rC   test_to_timedelta  s      r  r  c                 C   s2   t | }tj|dd}tt |t| d S )Nr(   rg   )rQ   rR   rL   rw   r   Zisna)r  r   r   rB   rB   rC   	test_isna  s    
r  r   c                 C   s   t d}|ddg  d8  < t|t t|d}|dd|  }t|ddd|  }tj	||j
d	d
idgdd}tj	||j
d	d
idgdd}t|| d S )NrO   r+   r,   r(   r  r   zB != r'   r   rv  r&  r   )rY   r  rQ   rM   r   r  r  rL   rw   r"  r   r   )r   r7   r   r   r   r_  r^   rB   rB   rC   test_slice_on_filtered_boundary  s    
r  c                  C   s   t dddddg} tjdtt| i| d}t|dd}|jdd  }t	
|| t|dd}|d}t	
|| t|dd}|d}t	
|| t|dd	}|d}t	
|| t|dd}|}t	
|| d S )
Nri   r-  r(   r*   r)   r   r0   r   r:  )rY   r  rQ   rM   r   r   r   r6  r  r   assert_frame_equalr   )r7   r   r_  r^   rB   rB   rC    test_boundary_slice_nonmonotonic  s"    


r  c                  C   s.   t  } t| dd}t  }t|| d S )Nr'   r*   )rQ   rM   r   r6  r   r  )r   r_  r^   rB   rB   rC   test_boundary_slice_empty  s    r  z0start, stop, right_boundary, left_boundary, dropri   r-  g      g      r:  r9  c           	      C   sZ   t dddddg}tjdtt|i|d}t|| |||}||}t	
|| d S )Nri   r-  r(   r*   r)   r   r0   )rY   r  rQ   rM   r   r   r   r6  r   r   r  )	rN  r`  Zright_boundaryZleft_boundaryr   r7   r   r_  r^   rB   rB   rC   test_with_boundary  s
    
r  zindex, left, rightrO   Z2017z
2017-01-10Z2016Z2018c                 C   s8   t jdtt| i| d}t|||}t|| d S )Nr   r0   )rQ   rM   r   r   r   r6  r   r  )r1   r  r  r   r_  rB   rB   rC   test_boundary_slice_same   s    r  c               	   C   sT   t ddddg} tj| dd}tt}|  W 5 Q R X t|j	dksPt
d S )Nr.   r/   r   r=   r(   rg   z'`mean` not supported with object series)rQ   rR   rL   rw   rj   rk   rl   rW   r   r   r?   )r   r   r   rB   rB   rC   $test_better_errors_object_reductions7  s
    r  c                  C   sT   t jdd } t| d| d| dg}|jdd}| }|j|jsPtd S )Nc                 S   s   t jt| dftddS )Nr*   abcdr&  )rQ   rM   rY   zerosr   r  rB   rB   rC   make_dfA  s    z-test_sample_empty_partitions.<locals>.make_dfr   rp   g?rh  )	rd   r	   rL   r{  rk  rX   r  ri  r?   )r  r   rC  r   rB   rB   rC   test_sample_empty_partitions@  s    
r  c                  C   sd   t tdd} tj| dd}ttt	f}t
|||d fD ]\}}tt||fdd q@d S )Nrp   rO   rO   r(   rg   r   c                 S   s   | |S r   rB   )tr=   rB   rB   rC   r   Q  r   ztest_coerce.<locals>.<lambda>)rQ   rM   rY   r  reshaperL   rw   r\  r  complexr   rj   rk   r   )r   r   funcsr=   r  rB   rB   rC   test_coerceL  s
    
r  c               
   C   sp   t tdd} tj| dd}||d ||k|d |d kg}|D ]"}tt	 t
| W 5 Q R X qHd S )Nrp   r  r(   rg   r   )rQ   rM   rY   r  r  rL   rw   rj   rk   rl   r   )r   r   Z
conditionsZcondrB   rB   rC   	test_boolT  s     r  c                  C   s   t jtjddtdd} t| d}|| fD ]`}| jD ]T}|| 	 ||d < || 
 ||d < ||  ||d < ||  ||d < q:q0t||  d S )	Nrp   r+   r   r&  csZcminZcmaxcp)rQ   rM   rY   r   r   r   rL   rw   rT   r'  r)  r*  r(  r   )r   r   r=   r   rB   rB   rC    test_cumulative_multiple_columns]  s    
r  c              	   C   s   ddl m} tjdddddgdd	d
ddgddddddgd}tj|dd}dd dd dd dd fD ]t}z| ||}W n tk
r   Y qhY nX ||| }|||dd t|t	j
st|jd tjtjfkshtqhd S )Nr   r   r'   r(   r)   r*   r+         @r         @      "@      $@rm  r.   r/   r   r=   r   r0   rg   c                 S   s   | S r   rB   r+  rB   rB   rC   r   v  r   z*test_map_partition_array.<locals>.<lambda>c                 S   s   | j S r   r   r+  rB   rB   rC   r   v  r   c                 S   s   | j S r   rj  r+  rB   rB   rC   r   v  r   c                 S   s   | j S r   r0   r+  rB   rB   rC   r   v  r   F)Z
check_type)r  r   rQ   rM   rL   rw   	ExceptionrQ  r|   r  r  r?   r  rY   r   )r,  r   r   r   prer^   r7   rB   rB   rC   test_map_partition_arrayl  s     
r  c                     s   t d t jddd tjddddd	gd
ddddgddddddgd} tj| dd} fdd}dd dd fD ]^}||| }|||}t|tj	st
| }|j|jk st
|j|jk stt
qtd S )NsparseZnumbaz0.40.0)Z
minversionr'   r(   r)   r*   r+   r  r  r  r  r  rm  r.   r/   r   r=   r   r0   rg   c                    s     t| S r   )ZCOOrY   r  r!  r  rB   rC   r     s    z$test_map_partition_sparse.<locals>.fc                 S   s   | S r   rB   r+  rB   rB   rC   r     r   z+test_map_partition_sparse.<locals>.<lambda>c                 S   s   | j S r   r   r+  rB   rB   rC   r     r   )rj   r  rQ   rM   rL   rw   rQ  r|   r  r  r?   rX   r   r   Zcoords)r   r   r   r  r^   r_  ZcomputedrB   r  rC   test_map_partition_sparse  s    
r  c                  C   s   t jddddgidddgd} tj| dd	}t| j| jj |j|jj  t| jj| j |jj|j  t| j| jj |j|jj  t| jj| j |jj|j  t| j| jj  |j|jj   d S )
Nr7   r'   r(   r)   r*   r+   r,   r0   rg   )	rQ   rM   rL   rw   r   r7   r  r1   rV  r   rB   rB   rC    test_mixed_dask_array_operations  s    r  c               	   C   s   t jddddddgiddddd	gd
} tj| dd}tjddd}tjtjff|_t	
t |j|   W 5 Q R X tjddd}t	
t}|j|  W 5 Q R X dt|jkstd S )Nr7   r'   r(   r)   r*   r+   r,   r3   r2   r0   rg   ))r'   r*   rw  r  r   )rQ   rM   rL   rw   r  r  rY   r   _chunksrj   rk   rl   r7   rX   r   r   r?   )r   r   r7   rD  rB   rB   rC   'test_mixed_dask_array_operations_errors  s    &r  c                  C   s   t jdddddgdddd	d
gdddgd} tj| dd}| jd t}|jd t}t|| d | | d  t||d d | | d  t|ddg | d | ddg | d  d S )Nr'   r(   r)   r*   r+   r|  r  r  r  r  rm  r7   r   r&  rg   r{   )	rQ   rM   rL   rw   r  rj  r  r   Zrechunk)r   r   r7   r  rB   rB   rC   'test_mixed_dask_array_multi_dimensional  s      r  c               
   C   s   t ddg} tj| dd}z|dd  W n2 tk
r` } zdt|ksPtW 5 d }~X Y nX t dddgddd	gd
ddgd}tj|d
d}t	
t}|j|j  W 5 Q R X dt|jkstd S )Nr  r(   rg   c                 S   s   | d S r  rB   r   rB   rB   rC   r     r   z"test_meta_raises.<locals>.<lambda>zmeta=r7   r   r0  r'   r)   r   )rQ   rR   rL   rw   r  rl   r   r?   rM   rj   rk   r  r.   r   r   )r   r   r   r   r   rD  rB   rB   rC   test_meta_raises  s    "$r  c               	   C   s   t jdddgdd} t dd tdD }tj| dd}tj|dd}| |_t 8 t	d	t
 t	d	t | | }|| }t|| W 5 Q R X d S )
Nr'   r(   r)   datetime64[ns]rW  c                 S   s   g | ]}t jj|d qS ))Zyears)rQ   r  Z
DateOffset)r   orB   rB   rC   r    s     zBtest_meta_nonempty_uses_meta_value_if_provided.<locals>.<listcomp>rg   r
  )rQ   rR   r   rL   rw   ra   r   ru   rv   r  r   rt   r   )baser  	dask_baseZdask_offsetsr^   r   rB   rB   rC   .test_meta_nonempty_uses_meta_value_if_provided  s    

r  c                     s   t d t d} | jjddd}d||dk < t|}| j}t|| jsVt	|
   }tj|dd	i}t fd
d|D st	d S )Nzscipy.sparsez
dask.array)r  rO   )rp   rO   rw  r   g?rd  rb  c                 3   s   | ]}t | jV  qd S r   )r|   
csr_matrixr  r  rB   rC   r     s     zDtest_dask_dataframe_holds_scipy_sparse_containers.<locals>.<genexpr>)rj   r  r   rL   r  rQ  r  r|   r  r?   rx  flattentolistrd   rX   r   )r  r7   r   r   vsr  rB   r  rC   1test_dask_dataframe_holds_scipy_sparse_containers  s    


r  c                     s   t dddddgi} tj| dd}td |jdd	  d
}t fdd|j	 D s`t
|dd	  }t fdd|j	 D st
d S )Nr7   r'   r(   r)   r*   rg   i@B c                 S   s   | S r   rB   rm  rB   rB   rC   r     r   z9test_map_partitions_delays_large_inputs.<locals>.<lambda>rj  c                 3   s   | ]} |kV  qd S r   rB   r  bigrB   rC   r     s     z:test_map_partitions_delays_large_inputs.<locals>.<genexpr>c                 S   s   | S r   rB   rm  rB   rB   rC   r     r   c                 3   s   | ]} |kV  qd S r   rB   r  r  rB   rC   r     s     )rQ   rM   rL   rw   rY   ZonesrQ  anyrd   r  r?   )r   r   r/   r.   rB   r  rC   'test_map_partitions_delays_large_inputs  s    
 r  c                  C   s   t dtdi} tj| dd}t|jd |d t|jd |d t|jd |d |jd d jdkszt	|j
jd d jdkst	|j
jd d d	   dd
ddddgkst	d S )Nr7   rO   r+   rg   r   r)   ri   r*   r(   r'   r2   r4   )rQ   rM   r   rL   rw   r   r;  r  rh   r?   r7   rX   r   r   rB   rB   rC   test_partitions_indexer  s    r  c                  C   sr   t ddddgi} tj| dd}t| | t| j|j t| jd |jd  t| jd dk|jd dk d S )Nr.   r'   r(   r)   rg   r   )rQ   rM   rL   rw   r   r.   r   rB   rB   rC   test_mod_eq  s    
r  c                  C   sJ   t ddgddgd} t|  d}d| | j< d||j< t| | d S )Nr'   r(   r)   r*   r  )rQ   rM   rL   rw   ru  rT   r   r   rB   rB   rC   test_setitem  s
    

r	  c                  C   sN   t ddgddgd} t|  d}d| | dk< d||dk< t| | d S )Nr'   r*   r)   r(   r  r+   rQ   rM   rL   rw   ru  r   r   rB   rB   rC   'test_setitem_with_bool_dataframe_as_key$  s
    r  c                  C   sV   t ddgddgd} t|  d}d| | d dk< d||d dk< t| | d S )Nr'   r*   r)   r(   r  r+   r   r
  r   rB   rB   rC   $test_setitem_with_bool_series_as_key,  s
    r  c               	   C   sV   t ddgddgd} t|  d}d| d< tjtdd	 d|d< W 5 Q R X d S )
Nr'   r*   r)   r(   rb  r+   r   znot supportedrn   )rQ   rM   rL   rw   ru  rj   rk   r  r   rB   rB   rC   <test_setitem_with_numeric_column_name_raises_not_implemented4  s
    r  c                  C   sL   t ddddddgi} tj| dd}t|| d  | |  d   d S Nr7   r'   r(   r)   r*   r+   rg   )rQ   rM   rL   rw   r   rV  r   rB   rB   rC   test_broadcast>  s    r  c                  C   sT   t ddddddgi} tj| dd}tj| jj| j	  |jj|j	   d S r  )
rQ   rM   rL   rw   r  r  r   r7   r  rW   r   rB   rB   rC   test_scalar_with_arrayD  s    r  c                   C   s4   t t stt tjtds$tt dr0td S )NrW  {   )r   rQ   rM   r?   rR   r  rB   rB   rB   rC   test_has_parallel_typeK  s    r  c               	   C   sp   t t&} tddidtjtdd d g W 5 Q R X dt| j	ksHt
dt| j	ksZt
dt| j	kslt
d S )Nr8   r  r7   rW  rR   rM   pandas)rj   rk   r   rL   rM   rQ   rR   r  r   r   r?   )rD  rB   rB   rC   test_meta_error_messageQ  s
    *r  c                  C   s   t ddddddgi} tj| dd}|jdks4t|jd	d
 }|jdksRt|jjdd
 dd}|jdkstt|jt	dd |jD kstd S )Nr7   r'   r(   r)   r*   r+   rg   Tc                 S   s   | d S NrO   rB   r   rB   rB   rC   r   _  r   z test_map_index.<locals>.<lambda>Fc                 S   s   | d S r  rB   r   rB   rB   rC   r   b  r   )is_monotonicc                 s   s   | ]}|d  V  qdS )rO   NrB   re  rB   rB   rC   r   d  s     z!test_map_index.<locals>.<genexpr>)
rQ   rM   rL   rw   r   r?   r1   r  r   r  )r   r   ZclearedZappliedrB   rB   rC   test_map_indexZ  s    r  c                  C   sf   t ddddddgi} tj| dd}| }|jd |_|  }|jd |_t|| t||  d S 	Nr7   r'   r(   r)   r*   r+   rg   rO   )rQ   rM   rL   rw   ru  r1   r   )r   r   Zddf_copyr^   rB   rB   rC   test_assign_indexg  s    
r  c                  C   sh   t ddddddgi} tj| dd}t|jd | jd  td|j d| j  t|j | j  d S r  )rQ   rM   rL   rw   r   r1   r   rB   rB   rC   test_index_divisionsv  s
    r  c                  C   s   t ddddddgi} tj| dd}t| dd|dd t| dd	d
|dd	d
 t| jdd|jdd t| jdd	d
|jdd	d
 d S )Nr7   r'   r(   r)   r*   r+   rg   rO   r   rc  )rQ   rM   rL   rw   r   r  r7   r   rB   rB   rC   test_replace  s    "r  c                     s   t ddddddgi} tj| dd}ttd |jd	d
  d}t fdd| 	 D sft
|dd
  }t fdd| 	 D st
d S )Nr7   r'   r(   r)   r*   r+   rg   rp   c                 S   s   | t | S r   rU  rm  rB   rB   rC   r     r   z2test_map_partitions_delays_lists.<locals>.<lambda>rj  c                 3   s   | ]}t  t |kV  qd S r   r   r  LrB   rC   r     s     z3test_map_partitions_delays_lists.<locals>.<genexpr>c                 S   s   | t | S r   rU  rm  rB   rB   rC   r     r   c                 3   s   | ]}t  t |kV  qd S r   r  r  r  rB   rC   r     s     )rQ   rM   rL   rw   r   r   rQ  r  __dask_graph__r  r?   )r   r   r"  rB   r  rC    test_map_partitions_delays_lists  s    "r   c                  C   s   t tjdtjdtjdtjdtjdtjdd} tj| dd}|j	j
tjksVt|jj
tjksht|jj
tjksztt tjdtjdd }|j
tjkst|j|d}|jj
tjkst|jj
tjkst|jj
tjkst|j	j
tjkstd S )NrO   rW  r  r(   rg   )r   )rQ   rM   rY   r  r]  r   rg  rL   rw   r   r   r?   r   rv  rR   rw  r   )r   r   r   rB   rB   rC   test_dtype_cast  s"    r!  
base_npart	map_npartr   sorted_map_indexc                 C   s   t dd tdD }|s8td}tj| ||_dd tdddD }t jtjj	dt
|d	|d
}|st|}tj| ||_||}tj|| dd}	tj||dd}
|	|
}tj|| d S )Nc                 S   s(   g | ] }d  tjjdddgddqS )r  r.   r/   r   r)   rX  )r  rY   r   r  re  rB   rB   rC   r    s     z#test_series_map.<locals>.<listcomp>rp   c                 S   s   g | ]}d  |qS )r  r  re  rB   rB   rC   r    s     r  r)   )repeatr3  rX  r0   Fr  )rQ   rR   r   rY   r  r   r  r1   r   r[  r   r  r  rL   rw   r  r   )r"  r#  r   r$  r  r1   	map_indexZmapperr^   r  Zdask_mapr_  rB   rB   rC   test_series_map  s$    



r'  c                  C   sd   t dddgdddggdd} | d}tj| dd}|d}|j|jksRtt| | d S )	Nr'   r(   r)   rF   r*   r  r   rg   )	rQ   rM   exploderL   rw   r   r?   r   rX   )r   Zexploded_dfr   Zexploded_ddfrB   rB   rC   test_dataframe_explode  s     

r)  c                  C   sV   t dddgdddgg} |  }tj| dd}| }t|| |j|jksRtd S )Nr'   r(   r)   rF   r*   rg   )rQ   rR   r(  rL   rw   r   r   r?   )r   Z
exploded_sr   Zexploded_dsrB   rB   rC   test_series_explode  s    
r*  c                  C   sb   t tdtdd} tj| dd}|d}|jdks>t|jdgksNtt	|| dg  d S )NrO   rm  r(   rg   r   r7   )
rQ   rM   r   rL   rw   poprP   r?   rT   r   )r   r   r   rB   rB   rC   test_pop  s    
r,  r   r!  c              	   C   sz   t dddgd ddgtdddd}tj|dd}t|d	 j| d
|d	 j| d
 t|j| |d|j| |d d S )Nr.   r   r'   r(   r   r  )r7   r   r   rg   r   r  )r   r!  )rQ   rM   rY   r  rL   rw   r   r  )r   r!  r   r   rB   rB   rC   test_nunique  s     " r-  c                  C   s   t jtdddt jdddddgd	dd
} t | }tj|dd}t|d d|d d t|d d|d d d S )Nr+   Zint8rW  z2021-11-27 00:05:02.175274z2021-11-27 00:05:05.205596z2021-11-27 00:05:29.212572z2021-11-27 00:05:25.708343z2021-11-27 00:05:47.714958r  rm  r(   rg   r7   Zuint8r   r   )rQ   rR   r   rM   rL   rw   r   viewr  rB   rB   rC   	test_view  s    
r/  c                  C   s   dddddgdddd	d
gd} t | }tj|dd}|dd}| | d  }|d j \}|d t	jks|d t	jkst
d S )Nr4   r   ri   r+   r-  r  r,   r2   r,  )Zcol_0Zcol_1r(   rg   r  r'   )rQ   rM   rL   rw   r>  r  rA  rb   r  r!   r?   )r   r   r   Ztaskr  rB   rB   rC   test_simple_map_partitions  s    
r1  c                  C   sh   t ddddgddddgd} t| d}t| t|ks@tt|ddgD ]\}}||ksNtqNd S )Nr'   r(   r)   r*   r  r   r   )rQ   rM   rL   rw   r   r?   r   )r   r   r   r^   rB   rB   rC   	test_iter  s
     r2  c                  C   s   t ddddddddd	gi} tj| dd
}t||jdk  j | | jdk  j  t||jdk j | | jdk j  d S r-  )rQ   rM   rL   rw   r   r7   r'  r   rB   rB   rC   2test_dataframe_groupby_cumsum_agg_empty_partitions  s    *r3  c                  C   s   t ddddddddd	gi} tj| dd
}t||jdk  j | | jdk  j  t||jdk j | | jdk j  d S r-  )rQ   rM   rL   rw   r   r7   r(  r   rB   rB   rC   3test_dataframe_groupby_cumprod_agg_empty_partitions   s    *r4  c                  C   s   t ddddddddd	g	dddddddddg	d
} t| d}t dddgd dddgd d
}t|d}||}t| | d}|  d S )Nr'   r(   r)   r*   r+   r,   r3   r2   r4   r-   TF)r$  )	rQ   rM   rL   rw   rK  r   r  rA  rj  )rM  rN  rO  rC  r   ZhlgrB   rB   rC   test_fuse_roots'  s    ,$
r5  c                  C   s`   t ddgddgddgd} dd	i| _t| d}| j|jksDt|  j| jks\td S )
Nr'   r(   r)   r*   r+   r,   r  datez
2020-10-16)rQ   rM   attrsrL   rw   r?   r  r   rB   rB   rC   test_attrs_dataframe4  s
    
r8  c                  C   sX   t jddgdd} d| jd< t| d}| j|jks8t| dj|djksTtd S )Nr'   r(   r   r   kgr  )rQ   rR   r7  rL   rw   r?   rq  r   rB   rB   rC   test_attrs_series=  s
    
r:  z*df.iloc[:0] does not keep the series attrsc                  C   sN   t ddgddgddgd} d| jjd	< t| d}| jj|jjksJtd S )
Nr'   r(   r)   r*   r+   r,   r  r9  r  )rQ   rM   r   r7  rL   rw   r?   r   rB   rB   rC   test_attrs_series_in_dataframesF  s    r;  c                  C   sh   t ddddddddd	gi} tj| dd
}tj| j| d dddd
}|j|d dd}t|| d S )Nr7   r'   r(   r)   r*   r+   r,   r3   r2   rg   _)Zlsuffix)rQ   rM   rL   rw   r  r   )r   r   Zexpected_dfZ	actual_dfrB   rB   rC   test_join_seriesS  s
    r=  c                  C   s  t ddddddddd	gi} tj| dd
}|jj |jhksDt|jj	|jt
 iks\t| |jfkspt|d }|jj |j|jhkst|jj	|jt
 |j|jhikst| |jfkst| }|jdd  dkst|j|j|jd h|jj stt|jjdks&t|jj	|j t
 ks@t|jj	|j |jhks\tt|jj	dksrt| |jd fkstd S )Nr7   r'   r(   r)   r*   r+   r,   r3   r2   rg   )r   r   )rQ   rM   rL   rw   rd   rz  r$  r\   r?   r  r  ry  rS  keyissubsetr   )r   r   ZddsZddirB   rB   rC   test_dask_layers[  s"    "(r@  c                  C   sp   t d t jdddjdd} | j}tjj	|
 d k	sBt|j D ]}tjj	|
 d k	sLtqLd S )NZjinja2idr  r  Fr`   )rj   r  r    r  ra   rd   xmletreeElementTree
fromstringZ_repr_html_r?   rz  r  )r7   hgr`  rB   rB   rC   'test_repr_html_dataframe_highlevelgraphq  s    
rH  z%Float64 was introduced in pandas>=1.2c                  C   sb   t jddgidd} tj| dd}|j|d d}| d jdksHt| d jdks^td S )	Nr.   r  ZFloat64rW  r'   rg   )r  r  )rQ   rM   rL   rw   rw  rX   r  r?   )Z	df_pandasr   rB   rB   rC   test_assign_na_float_columnsz  s
    rI  c            
   	   C   s@  t ddddg} t ddddg}t | |d}tj| dd}tj|dd}tj|dd}t| ||| t| ||| tj| dd}tj|dd}tj|dd}t| ||| t| ||| |j|t jdgd	d
d }	|	jd	kst	t
t |tddddg W 5 Q R X d S )Nr'   r(   r)   r*   r+   r,   ZoneZtworg   Ztest_seriesr   rS  )rQ   rR   rM   rL   rw   r   dotrX   rP   r?   rj   rk   r   r  r  )
s1r  r   dask_s1dask_dfdask_s2Zpartitioned_s1Zpartitioned_dfZpartitioned_s2r   rB   rB   rC   test_dot  s"    rP  c                  C   s   t ddddg} tj| dd}t tjtjtjtjg}tj|dd}t | |d}tj|dd}t| ||| t|||| d S )Nr'   r(   r)   r*   rg   rJ  )	rQ   rR   rL   rw   rY   r   rM   r   rK  )rL  rM  r  rO  r   rN  rB   rB   rC   test_dot_nan  s    rQ  c            	         s  t ddddgi} t| }t ddddgi}t|}t|sHtt|sTttj	j
|dshtttj	j
j|dg dt jstg   fdd}t dddgd dddgd d	}tj|dd
}|j||jd}t|}|d 
|d  }t| t j dS )z)Testing wrapping frames in proxy wrappersr   r'   r(   r)   )r  c                    s     |  t| S r   )appendweakrefproxyr   lrB   rC   r     s    
z$test_use_of_weakref_proxy.<locals>.fr   )r   r/   rg   rS  r/   r   N)rQ   rM   rS  rT  rR   r"   r?   r#   rd   	dataframer  Z
_cov_chunkr|   Z_groupby_apply_funcsrL   rw   rQ  r   rV  rX   )	r   Zdf_pxyZserZser_pxyr   r=   r.   Zpxyr   rB   rU  rC   test_use_of_weakref_proxy  s&    

$
rX  c                  C   s   t td} tj| dd}t| j|j t tddd}tj|dd}t|j|j t ttddttdd }tj|dd}t|j|j t|j|j d S )Nr   r+   rg   r   ri   )	rQ   rR   r   rL   rw   r   is_monotonic_increasingis_monotonic_decreasingr   r   r   s_2ds_2Zs_3Zds_3rB   rB   rC   test_is_monotonic_numeric  s    "r^  zpandas removed is_monotonicc               	   C   sj   t td} tj| dd}tttdd | j}W 5 Q R X tttdd |j}W 5 Q R X t	|| d S )Nr   r+   rg   is_monotonic is deprecatedr9  )
rQ   rR   r   rL   rw   r%   r   r  r  r   r   r   r^   r_  rB   rB   rC   test_is_monotonic_deprecated  s        ra  c                  C   sb   t t jddd} tj| dd}t| j|j t tt| }tj|dd}t|j	|j	 d S )Nr   rO   r   r+   rg   )
rQ   rR   r   rL   rw   r   rY  r   reversedrZ  r   r   r\  r]  rB   rB   rC   test_is_monotonic_dt64  s    rd  c                  C   s   t jdtdd} tj| ddd}t| jj|jj t jdtdddd}tj|ddd}t|jj|jj t jdt	tddt	tdd d}tj|ddd}t|jj|jj t|jj|jj d S )	Nr'   r   r0   r+   Fr  r   ri   )
rQ   rR   r   rL   rw   r   r1   rY  rZ  r   r[  rB   rB   rC   test_index_is_monotonic_numeric  s    &re  c               	   C   st   t jdtdd} tj| ddd}tttdd | jj	}W 5 Q R X tttdd |jj	}W 5 Q R X t
|| d S )	Nr'   r   r0   r+   Fr  r_  r9  )rQ   rR   r   rL   rw   r%   r   r  r1   r  r   r`  rB   rB   rC   "test_index_is_monotonic_deprecated  s        rf  c                  C   sv   t jdt jdddd} tj| ddd}t| jj|jj t jdtt	| d}tj|ddd}t|jj
|jj
 d S )	Nr'   r   r   r   r0   rO   Fr  )rQ   rR   r   rL   rw   r   r1   rY  r   rb  rZ  rc  rB   rB   rC   test_index_is_monotonic_dt64  s    rg  c                  C   s   t ddddgddddgd} tj| dd}| | d dk } ||d dk }t| d j|d j t| jj|jj t| d j|d j t| jj|jj d S )Nr'   r(   r)   r*   r-   rg   r.   )rQ   rM   rL   rw   r   rY  r1   rZ  r   rB   rB   rC   "test_is_monotonic_empty_partitions%  s     rh  c                  C   s~   t jdgdgdgdggdddgd} tj| dd}d	d
 }dd }|d j|ddj||dd d }|dddksztd S )Nr.   r(   r*   r2   r   r'   )rT   r   r1   rg   c                 S   s
   | | dS )Nrm  rB   r   rB   rB   rC   map_fn;  s    z&test_custom_map_reduce.<locals>.map_fnc                 S   sL   d }| D ]>}|d kr|  }q|d  |d 7  < |d  |d 9  < q|S r  )ru  )ZseriesmergedZmappedrB   rB   rC   	reduce_fn>  s    
z)test_custom_map_reduce.<locals>.reduce_fn)r   r   rS  )r  rT  r  @   rm  )rQ   rM   rL   rw   r  r  rX   r?   )r   r   ri  rk  r_  rB   rB   rC   test_custom_map_reduce2  s     $   rm  orientc                 C   sr   t dt dd}tjj|| |d}tjj||| |d}|dkrV|jt|dksdtn|j|ksdtt|| d S )NrO   r-   )r   rn  )rh   r   rn  r1   r(   )	r   rQ   rM   	from_dictrL   rh   rS  r?   r   )r   rn  rh   r   r^   r_  rB   rB   rC   test_from_dictQ  s       rp  c               	   C   sN   t td} tj| dd}tjtdd tjj	d|idd W 5 Q R X d S )NrO   r(   rg   zDask collections as inputsrn   r.   )
rQ   rR   r   rL   rw   rj   rk   r  rM   ro  r   rB   rB   rC   test_from_dict_raisesb  s    rq  c                	   C   sD   t jtdd tj W 5 Q R X t jtdd tj W 5 Q R X d S )Nzmay be expensivern   )rj   rk   r  r=   r  r   rB   rB   rB   rC   
test_emptyi  s    rr  c                  C   sl   t ddjdddd } tdd | jj D s6t|   |    tdd | jj D shtd S )	Nz
2000-01-03)rM  rA  r  rB  c                 S   s   g | ]}|   qS rB   r[  r   rV  rB   rB   rC   r  t  s     z)test_repr_materialize.<locals>.<listcomp>c                 S   s   g | ]}|   qS rB   rs  rt  rB   rB   rC   r  w  s     )	r    r  r   rd   rz  r  r?   __repr__r  )r   rB   rB   rC   test_repr_materializep  s
    rv  z.Requires native PyArrow-backed ExtensionArrayszint64[pyarrow]zint32[pyarrow]zfloat64[pyarrow]zfloat32[pyarrow]zuint8[pyarrow]c                 C   s\   t d tjdtdi| d}tj|dd}|j|j d }|j|j d }t|| d S )Npyarrowr7   rO   rW  r)   rg   r(   )	rj   r  rQ   rM   r   rL   rw   r7   r   )r   r   r   r^   r_  rB   rB   rC   test_pyarrow_extension_dtypez  s    
rx  c               	   C   s   t d} | jddd}| jtdtdtdtdtd	td
g|d}tjd|it|d}t	j
|dd}|j|j d }|j|j d }t|| d S )Nrw  r3   r)   )Z	precisionZscalez8093.234z8094.234z8095.234z8096.234z8097.234z8098.234)rA  r7   rW  rg   r(   )rj   r  Z
decimal128r  decimalDecimalrQ   rM   Z
ArrowDtyperL   rw   r7   r   )paZpa_dtyper   r   r   r^   r_  rB   rB   rC   $test_pyarrow_decimal_extension_dtype  s"    
r|  )T(  ry  re  ru   rS  xml.etree.ElementTreerC  r   r   	itertoolsr   operatorr   ZnumpyrY   r  rQ   rj   Zpandas.errorsr   Zpandas.io.formatsr   r\  rd   Z
dask.arrayr  r  Zdask.dataframerW  rL   Zdask.dataframe.groupbyr	   Z	dask.baser
   Zdask.blockwiser   r   r   Zdask.dataframe._compatr   r   r   r   r   r   r   Zdask.dataframe.corer   r   r   r   r   r   r   r   Zdask.dataframe.utilsr   r   r   Zdask.datasetsr    Z
dask.utilsr!   r"   r#   r$   Zdask.utils_testr%   r&   r	  ImportErrorrM   rb   rU   rT  r=   rX   rV   r  rD   rN   r_   rf   rm   ry   rz   r}   r   r   r   r   r   r   r   r   r   markZskipifZPANDAS_GT_130ZparametrizeparamZxfailr   r   r   r   r   r   r   r   r  r  r  r  r+  r'  r(  r)  r*  r.  r8  r?  rE  rP  rR  ra  rg  rk  rn  rq  rr  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsrR   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  Zslowr/  r7  r8  r  r<  rB  rC  rD  rE  rF  rK  rQ  rU  rW  r]  r^  r  re  rf  rm  rt  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r\  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Zgpur  r  r  r  r  r  r  r  r$  r'  r0  r5  r6  r8  r;  r<  r?  rB  Z
MultiIndexfrom_tuplesrE  rF  rG  rH  rK  rO  rQ  rR  rZ  r^  r_  rg  rl  rm  ro  ZNaTZNArs  rt  rv  rz  r{  r}  r~  r  r  rc   r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  ZasarrayZ
to_recordsr  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r   r!  r'  r)  r*  r,  r-  r/  r1  r2  r3  r4  r5  r8  r:  r;  r=  r@  rH  rI  rP  rQ  rX  r^  ra  rd  re  rf  rg  rh  rm  rp  rq  rr  rv  rx  r|  rB   rB   rB   rC   <module>   s  $	(

$$$ 
 


 	!
&
I+`

*
I
 
3	
' 	
 	
)B&)-#n""  
	(

	>D"=
	.
*/
,
%	
	 #/	
<	
	
	 	
$$$$			
		
		
				 


 

 