3
Ud                 @   sR  d dl mZ d dlmZ d dlZd dlZd dlmZmZ d dl	j
Zd dlmZ ejdd Zdd	 Zd
d Zdd Zejjdddgdd Zdd Zdd Zdd Zdd Zejjdddgdd Zejjdd d1ddgdd  Zejjdddd!gd"d# Zd$d% Zejjd&dd!gd'd( Zejjd)d2d3gd+d, Zd-d. Z d/d0 Z!dS )4    )StringIO)PathN)	DataFrame	read_json)
JsonReaderc              C   s*   t jdddgdddgd} | jdd	d
S )N                  )ABTrecords)linesorient)pdr   to_json)df r   W/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/io/json/test_readlines.pylines_json_df   s    r   c              C   s8   t ddd} tddgddggddgd}tj| | d S )	Nz!{"a": 1, "b": 2}
{"b":2, "a" :1}
T)r   r   r   ab)columns)r   r   tmassert_frame_equal)resultexpectedr   r   r   test_read_jsonl   s    r   c              C   s|   d} t | } t| dd}tddgddggddgd	}tj|| d} t| dd}tddgddggddgd	}tj|| d S )
Nu5   {"a": "foo”", "b": "bar"}
{"a": "foo", "b": "bar"}
T)r   u   foo”barfoor   r   )r   )r   r   r   r   r   )jsonr   r   r   r   r   test_read_jsonl_unicode_chars   s    r#   c              C   s   t ddgddggddgd} | jddd}d	}||ks:tt d
dgddggddgd} | jddd}d}||kstttjt|dd|  t ddgddggddgd} | jddd}d}||ksttjt|dd|  d S )Nr   r   r   r   )r   r   T)r   r   z{"a":1,"b":2}
{"a":1,"b":2}zfoo}r    zfoo"z.{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"})r   zfoo\za\z3{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"})r   r   AssertionErrorr   r   r   )r   r   r   r   r   r   test_to_jsonl,   s    r%   	chunksizer   g      ?c             C   s<   t t| dd}t t| d|d}tj|}tj|| d S )NT)r   )r   r&   )r   r   r   concatr   r   )r   r&   	unchunkedreaderchunkedr   r   r   test_readjson_chunksA   s    
r+   c             C   s6   d}t jt|d tjt| ddd W d Q R X d S )Nz*chunksize can only be passed if lines=True)matchFr   )r   r&   )pytestraises
ValueErrorr   r   r   )r   msgr   r   r   &test_readjson_chunksize_requires_linesN   s    r1   c              C   sl   t jddd} t| jddd}t j|ddd}t| jddd}t jt j|dddd	}tj|| d S )
Nr   r   )r   r   Tr   )r   r   Series)r   typ)r   r3   r&   )r   r2   r   r   r   r'   r   Zassert_series_equal)sZstrior(   r*   r   r   r   test_readjson_chunks_seriesT   s    r5   c             C   s@   t tjt| ddd}|d jdks*t|d jdks<td S )NTr   )r   r&   r   r   )r   r   )r   r   )listr   r   r   shaper$   )r   chunksr   r   r   test_readjson_each_chunka   s    r9   c              C   sv   t jdb} tjdddgdddgd}|j| d	d
d tjtj| d	dd}tj| d	d}t j|| W d Q R X d S )Nz	test.jsonr   r   r	   r
   r   r   )r   r   Tr   )r   r   )r   r&   )r   )r   ensure_cleanr   r   r   r'   r   r   )pathr   r*   r(   r   r   r   test_readjson_chunks_from_filei   s    r<   c             C   s   t jdv}tjdddgdddgd}|j|d	d
d t|d dd	d	d	d	ddd d d	| d d d}|j  |jjs|t	d|  W d Q R X d S )Nz	test.jsonr   r   r	   r
   r   r   )r   r   Tr   )r   r   frameF)r   r3   ZdtypeZconvert_axesZconvert_datesZkeep_default_datesZnumpyZprecise_floatZ	date_unitencodingr   r&   compressionnrowsz%didn't close stream with chunksize = )
r   r:   r   r   r   r   readZopen_streamclosedr$   )r&   r;   r   r)   r   r   r   test_readjson_chunks_closesr   s,    
rC   g@r!   c             C   s6   d}t jt|d tjt| d|d W d Q R X d S )Nz"'chunksize' must be an integer >=1)r,   T)r   r&   )r-   r.   r/   r   r   r   )r   r&   r0   r   r   r   test_readjson_invalid_chunksize   s    rD   r   c             C   s\   d}t jdddgdddgd}t j|d	| d
}| d k	rBt j|}tj||d|  d d S )NzF

    {"A":1,"B":4}



    {"A":2,"B":5}







    {"A":3,"B":6}
    r   r   r	   r
   r   r   )r   r   T)r   r&   zchunksize: )obj)r   r   r   r'   r   r   )r&   jorigtestr   r   r   )test_readjson_chunks_multiple_empty_lines   s    
rI   c             C   sr   t jd^}| jddd  t|ddd}|jd W d Q R X t|}tjd	d
gi}t j|| W d Q R X d S )Nz	test.jsonz _bootlocale.getpreferredencodingc             S   s   dS )Ncp949r   )lr   r   r   <lambda>   s    z'test_readjson_unicode.<locals>.<lambda>wzutf-8)r>   u6   {"£©µÀÆÖÞßéöÿ":["АБВГДабвгд가"]}u   £©µÀÆÖÞßéöÿu   АБВГДабвгд가)	r   r:   setattropenwriter   r   r   r   )Zmonkeypatchr;   fr   r   r   r   r   test_readjson_unicode   s    rR   r@   c             C   sN   d}t j|d| d}t jddddgdd	d
dgdjd |  }tj|| d S )Nz[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}T)r   r@   r   r	   r      r   r
   r      )r   r   )r   r   r   ilocr   r   )r@   jsonlr   r   r   r   r   test_readjson_nrows   s    *rW   znrows,chunksizer
   c             C   sX   d}t |d| |d}tj|}tjddddgdd	d
dgdjd |  }tj|| d S )Nz[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}T)r   r@   r&   r   r	   r   rS   r   r
   r   rT   )r   r   )r   r   r'   r   rU   r   r   )r@   r&   rV   r)   r*   r   r   r   r   test_readjson_nrows_chunks   s
    
*rX   c              C   s6   d} d}t jt|d tj| ddd W d Q R X d S )Nz[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}z&nrows can only be passed if lines=True)r,   Fr   )r   r@   )r-   r.   r/   r   r   )rV   r0   r   r   r   "test_readjson_nrows_requires_lines   s    rY   c             C   s   t jddggddgdgdt jddggddgdgdt jd	d
ggddgdgdg}| dddd}t|j }t j|ddd}x$t|D ]\}}tj|||  qW d S )Nr   r   r   r   r   )r   indexr	   r
   r   r   ior"   datazline_delimited.jsonT)r   r&   )r   r   r   as_urir   	enumerater   r   )ZdatapathZdf_list_expectedZos_pathfile_urlZ
url_readerrZ   Zchuckr   r   r   "test_readjson_lines_chunks_fileurl   s    r`   )r   r   )r
   r   )"r[   r   pathlibr   r-   Zpandasr   r   r   Zpandas._testingZ_testingr   Zpandas.io.json._jsonr   Zfixturer   r   r#   r%   markZparametrizer+   r1   r5   r9   r<   rC   rD   rI   rR   rW   rX   rY   r`   r   r   r   r   <module>   s.   
	