a
    S/b                     @   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g dg ddZejeddZejd	g d
dd Zdd Zdd Zdd Zdd Zejdg ddd Zejd	g d
dd Zejdddgdd Zejd	g d
d d! Zejd	g d
d"d# Zd$d% Zd&d' Zejd(g dd)d* Z ejd+g d,d-d. Z!d/d0 Z"d1d2 Z#dS )3    N)	assert_eq)tmpdirtmpfileabcd            xyr   npartitionsorient)splitrecordsindexcolumnsvaluesc                 C   s   t d}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srJ t|| W d    n1 s0    Y  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"   r   r   factual	actual_pd r2   @lib/python3.9/site-packages/dask/dataframe/io/tests/test_json.pytest_read_json_with_path_column   s    

r4   c               	   C   s|   t d`} tj| ddd tjtdd" tj| dddd W d    n1 sP0    Y  W d    n1 sn0    Y  d S )	Nr   r   Fr   zFiles already containmatchr   r   )r   r$   r%   pytestraises
ValueErrorr&   r'   r/   r2   r2   r3   7test_read_json_path_column_with_duplicate_name_is_error    s    
r;   c                  C   s   d} dd }t dn}tj|ddd tj|dd| |d}tj|ddd}tj||ft| d	d
|| < t|| W d    n1 s0    Y  d S )N	filenamesc                 S   s   dS )Nz	asdf.jsonr2   r   r2   r2   r3   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/   r0   r1   r2   r2   r3   "test_read_json_with_path_converter'   s     

r?   c                   C   sB   t jtdd  tjdddd W d    n1 s40    Y  d S )NLine-delimited JSONr5   znofile.jsonr   Tr   )r7   r8   r9   r&   r'   r2   r2   r2   r3   &test_read_orient_not_records_and_lines=   s    rA   c               	   C   sl   t dP} tjtdd" tjt| ddd W d    n1 s@0    Y  W d    n1 s^0    Y  d S )Nr   r@   r5   r   Tr   )r   r7   r8   r9   r&   r%   ddfr:   r2   r2   r3   'test_write_orient_not_records_and_linesB   s    
rC   	blocksize)      !      i_ c                 C   s  t |dtjd}t |dtjd}ttdg d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.jsonrE   r   r   r   r	   er         ?r=   r   Tr   r!   r#   	fil*.json)r   r   r   rD   FZcheck_index)strjoinr*   r+   r,   r(   	DataFramerangeassignr   r%   ZCategoricalDtyper)   r-   concatr&   r'   r   )rD   r   Zfil1Zfil2r$   df2r   r   Z
path_dtypesolresr2   r2   r3   .test_read_json_multiple_files_with_path_columnH   s(    rY   c                 C   s   t dh}tj|| dd tj|| dd}tj|| dd}t|| | dkrXttj|_t|t W d    n1 sv0    Y  d S )Nr   Fr   r   )	r   r$   r%   r&   r'   r(   r   listr   r.   r2   r2   r3   test_read_json_basic`   s    

r[   fkeywordpandasr   c                    st    fdd}t dL}tj|ddd tj|dd|d}tj|ddd}t|| W d    n1 sf0    Y  d S )Nc                     s$    dkrt jtj|  S t j|  S )Nr   )r(   rR   Z	from_dictr   loadr'   argskwargsr\   r2   r3   _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   )r\   rc   r/   r0   r1   r2   rb   r3   test_read_json_fkeywordm   s    
rd   c                 C   s   t tdg d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 )NrE   rK   r   rM   r=   r   rI   r   rJ   r   r   r   rN   )r   metar   T2   )r   re   r   rD   FrO   )r(   rR   rS   rT   r   r%   rP   rQ   rU   Zilocr   r&   r'   r   )r   r   r$   rV   r   rW   re   rX   r2   r2   r3   test_read_json_meta{   s,    
rg   c                 C   sv   t  \}tj|d}tj|| dd tj|| dd}| dkrJttj	|_	t
|t W d    n1 sh0    Y  d S )N1.jsonFr   r   )r   r+   r#   rQ   r$   r%   r&   r'   rZ   r   r   )r   r#   fnr0   r2   r2   r3   test_write_json_basic   s    rj   c                     s   ddl m dg  fdd} tg dg dd}tj|d	d
}t P}|j|d| id  d slJ tt	j
|d}t||dd W d    n1 s0    Y  d S )Nr   )getFc                     s   d d< | i |S )NTr   r2   r_   flagZmp_getr2   r3   my_get   s    z%test_to_json_with_get.<locals>.my_getr   r
   r   r   r   Z	scheduler)Zcompute_kwargs*rO   )Zdask.multiprocessingrk   r(   rR   r&   from_pandasr   r%   r'   r+   r#   rQ   r   )rn   r$   rB   Zdnresultr2   rl   r3   test_to_json_with_get   s    rr   c               	   C   s   t d} tt  tj| ddd W d    n1 s:0    Y  tj| ddd tt  tj| ddd W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   r   Tr   Fr   )r   rD   )r   r7   r8   r9   r$   r%   r&   r'   r:   r2   r2   r3   test_read_json_error   s    
.rs   blockc                 C   s|   t  b}tj|d}tj|ddd tj|| dd}|jdksL| dksLJ t	|td	d
 W d    n1 sn0    Y  d S )Nrh   r   Tr   
   )rD   Zsampler      FrO   )
r   r+   r#   rQ   r$   r%   r&   r'   r   r   )rt   r#   ri   r	   r2   r2   r3   test_read_chunked   s    rw   compression)Ngzipxzc                 C   s`   t  F}tjt|| d tjtj|d| d}tt	|dd W d    n1 sR0    Y  d S )Nrx   ro   FrO   )
r   r&   r%   rB   r'   r+   r#   rQ   r   r$   )rx   r#   r0   r2   r2   r3   test_json_compressed   s    r|   c                  C   s`   t  F} tj| d}tjt|dd t|}tt	|dd W d    n1 sR0    Y  d S )Nz	*.json.gzry   r{   FrO   )
r   r+   r#   rQ   r&   r%   rB   r'   r   r$   )r#   ri   r0   r2   r2   r3   #test_read_json_inferred_compression   s
    
r}   c                     s   t d: t } |  fddttjD ks4J W d    n1 sH0    Y  t dL tj dd}tj| } | t fddttjD ksJ W d    n1 s0    Y  d S )Nr   c                    s    g | ]}t j | d qS ).partr+   r#   rQ   .0nr:   r2   r3   
<listcomp>       z(test_to_json_results.<locals>.<listcomp>F)computec                 3   s"   | ]}t j | d V  qdS )r~   Nr   r   r:   r2   r3   	<genexpr>   s   z'test_to_json_results.<locals>.<genexpr>)r   rB   r%   rS   r   daskr   tuple)pathsZlist_of_delayedr2   r:   r3   test_to_json_results   s    

>

r   )$r   r+   r]   r(   r7   r   Zdask.dataframeZ	dataframer&   Zdask.dataframe.utilsr   Z
dask.utilsr   r   rR   r$   rp   rB   ZmarkZparametrizer4   r;   r?   rA   rC   rY   r[   rd   rg   rj   rr   rs   rw   r|   r}   r   r2   r2   r2   r3   <module>   sB   






	
	
