U
    /e                     @   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 d dl	m
Z
 d dlmZmZ eddddgdd	d
dgdZejed	dZejddddddgdd Zdd Zdd Zdd Zdd Zejddd d!d"d#gd$d% Zejddddddgd&d' Zejd(d)d*gd+d, Zejddddddgd-d. Zejddddddgd/d0 Zd1d2 Zd3d4 Zejd5dd d!d"d#gd6d7 Z ejd8dd9d:gd;d< Z!d=d> Z"d?d@ Z#dS )A    N)	assert_eq)tmpdirtmpfileabcd            xynpartitionsorientsplitrecordsindexcolumnsvaluesc              	   C   s   t dx}tj|| dd tj|| ddd}tj|| dd}tj|tj	dft
| dd|d	< |jjdksrtt|| W 5 Q R X d S )
NjsonFr   linesTr   r   include_path_column/categorydtypepath)r   dfto_jsondd	read_jsonpdSeriesreplaceosseplenr!   r    AssertionErrorr   r   factual	actual_pd r1   E/tmp/pip-unpacked-wheel-dbjnr7gq/dask/dataframe/io/tests/test_json.pytest_read_json_with_path_column   s    
 
r3   c               
   C   sT   t dB} tj| ddd tjtdd tj| dddd W 5 Q R X W 5 Q R X d S )	Nr   r   Fr   zFiles already containmatchr   r   )r   r"   r#   pytestraises
ValueErrorr$   r%   r.   r1   r1   r2   7test_read_json_path_column_with_duplicate_name_is_error    s    
r:   c               	   C   s   d} dd }t dd}tj|ddd tj|dd| |d}tj|ddd}tj||ft| d	d
|| < t|| W 5 Q R X d S )N	filenamesc                 S   s   dS )Nz	asdf.jsonr1   r   r1   r1   r2   path_converter*   s    z:test_read_json_with_path_converter.<locals>.path_converterr   r   Fr   )r   r   r   r=   r   r   )	r   r"   r#   r$   r%   r&   r'   r+   r   )Zpath_column_namer=   r.   r/   r0   r1   r1   r2   "test_read_json_with_path_converter'   s"    
 
r>   c                	   C   s.   t jtdd tjdddd W 5 Q R X d S )NLine-delimited JSONr4   znofile.jsonr   Tr   )r6   r7   r8   r$   r%   r1   r1   r1   r2   &test_read_orient_not_records_and_lines=   s    r@   c               
   C   sD   t d2} tjtdd tjt| ddd W 5 Q R X W 5 Q R X d S )Nr   r?   r4   r   Tr   )r   r6   r7   r8   r$   r#   ddfr9   r1   r1   r2   'test_write_orient_not_records_and_linesB   s    
rB   	blocksize      !      i_ c                 C   s  t |dtjd}t |dtjd}ttdddddd	gd
}|j|j	d d}d}d}|j
|||d |j
|||d t||f}tj|ft| |d|d< tj|ft| |d|d< t||g}	tjt |d||d| d}
t|
|	dd d S )N	fil1.jsonr   	fil2.jsonrD   r   r   r   r   er         ?r<   r   Tr   r   r!   	fil*.json)r   r   r   rC   FZcheck_index)strjoinr(   r)   r*   r&   	DataFramerangeassignr   r#   ZCategoricalDtyper'   r+   concatr$   r%   r   )rC   r   Zfil1Zfil2r"   df2r   r   Z
path_dtypesolresr1   r1   r2   .test_read_json_multiple_files_with_path_columnH   s(    rW   c              	   C   sp   t d^}tj|| dd tj|| dd}tj|| dd}t|| | dkrXttj|_t|t W 5 Q R X d S )Nr   Fr   r   )	r   r"   r#   r$   r%   r&   r   listr   r-   r1   r1   r2   test_read_json_basic`   s    

rY   fkeywordpandasr   c              	      s`    fdd}t dB}tj|ddd tj|dd|d}tj|ddd}t|| W 5 Q R X d S )Nc                     s$    dkrt jtj|  S t j|  S )Nr   )r&   rP   	from_dictr   loadr%   argskwargsrZ   r1   r2   _my_json_readero   s    z0test_read_json_fkeyword.<locals>._my_json_readerr   r   Fr   )r   r   Zengine)r   r"   r#   r$   r%   r&   r   )rZ   rb   r.   r/   r0   r1   ra   r2   test_read_json_fkeywordm   s    
rc   c                 C   s   t tddddddgd}|j|jd d	}| d
k}|jt|d| |d |jt|d| |d t ||g}|j	d d }| dkrddg |_
|_
tjt|d| ||d}t|| | d
krtjt|d| |ddd}t||dd d S )NrD   r   r   r   r   rJ   r   rK   r<   r   rH   r   rI   r   r   r	   rL   )r   metar   T2   )r   rd   r   rC   FrM   )r&   rP   rQ   rR   r   r#   rN   rO   rS   Zilocr   r$   r%   r   )r   r   r"   rT   r   rU   rd   rV   r1   r1   r2   test_read_json_meta{   s2       
rf   c              	   C   sb   t  R}tj|d}tj|| dd tj|| dd}| dkrJttj	|_	t
|t W 5 Q R X d S )N1.jsonFr   r   )r   r)   r!   rO   r"   r#   r$   r%   rX   r   r   )r   r!   fnr/   r1   r1   r2   test_write_json_basic   s    ri   c               	      s   ddl m dg  fdd} tdddd	gd
dddgd}tj|dd}t F}|j|d| id  d sttt	t
j|d}t||dd W 5 Q R X d S )Nr   )getFc                     s   d d< | |S )NTr   r1   r^   flagZmp_getr1   r2   my_get   s    z%test_to_json_with_get.<locals>.my_getr   r   r   r   r	   r
   r   r   r   r   Z	scheduler)Zcompute_kwargs*rM   )Zdask.multiprocessingrj   r&   rP   r$   from_pandasr   r#   r,   r%   r)   r!   rO   r   )rm   r"   rA   dnresultr1   rk   r2   test_to_json_with_get   s     rr   c               
   C   st   t db} tt tj| ddd W 5 Q R X tj| ddd tt tj| ddd W 5 Q R X W 5 Q R X d S )Nr   r   Tr   Fr	   )r   rC   )r   r6   r7   r8   r"   r#   r$   r%   r9   r1   r1   r2   test_read_json_error   s    
rs   blockc              	   C   sh   t  X}tj|d}tj|ddd tj|| dd}|jdksL| dksLt	t
|td	d
 W 5 Q R X d S )Nrg   r   Tr   
   )rC   sampler	      FrM   )r   r)   r!   rO   r"   r#   r$   r%   r   r,   r   )rt   r!   rh   r   r1   r1   r2   test_read_chunked   s    rx   compressiongzipxzc              	   C   sL   t  <}tjt|| d tjtj|d| d}tt	|dd W 5 Q R X d S )Nry   rn   FrM   )
r   r$   r#   rA   r%   r)   r!   rO   r   r"   )ry   r!   r/   r1   r1   r2   test_json_compressed   s    r}   c               	   C   sL   t  <} tj| d}tjt|dd t|}tt	|dd W 5 Q R X d S )Nz	*.json.gzrz   r|   FrM   )
r   r)   r!   rO   r$   r#   rA   r%   r   r"   )r!   rh   r/   r1   r1   r2   #test_read_json_inferred_compression   s
    
r~   c               	      s   t d0 t } |  fddttjD ks4tW 5 Q R X t dB tj dd}tj| } | t fddttjD kstW 5 Q R X d S )Nr   c                    s    g | ]}t j | d qS ).partr)   r!   rO   .0nr9   r1   r2   
<listcomp>   s     z(test_to_json_results.<locals>.<listcomp>F)computec                 3   s"   | ]}t j | d V  qdS )r   Nr   r   r9   r1   r2   	<genexpr>   s    z'test_to_json_results.<locals>.<genexpr>)	r   rA   r#   rQ   r   r,   daskr   tuple)pathsZlist_of_delayedr1   r9   r2   test_to_json_results   s    

*

r   )$r   r)   r[   r&   r6   r   Zdask.dataframeZ	dataframer$   Zdask.dataframe.utilsr   Z
dask.utilsr   r   rP   r"   ro   rA   markZparametrizer3   r:   r>   r@   rB   rW   rY   rc   rf   ri   rr   rs   rx   r}   r~   r   r1   r1   r1   r2   <module>   sB    






	
	
