U
    `»{j$&  ã                   @   sl  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	m
Z d dlmZ ejdd„ ƒZdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zej dddg¡dd „ ƒZej dd d!d"d#g¡d$d%„ ƒZej dddd&g¡d'd(„ ƒZd)d*„ Zej d+dd&g¡d,d-„ ƒZ ej d.d/d0g¡d1d2„ ƒZ!d3d4„ Z"d5d6„ Z#d7d8„ Z$dS )9é    )ÚStringIO)ÚPathN)Ú	DataFrameÚ	read_json)Ú
JsonReaderc                  C   s(   t dddgdddgdœƒ} | jdd	d
�S )Né   é   é   é   é   é   ©ÚAÚBTÚrecords©ÚlinesÚorient)r   Úto_json)Údf© r   úb/var/www/html/bwave/python/venv/lib/python3.8/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 | |¡ 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   sj   t ddgddgdfgdddgd	�} | jd
dd�}t|ƒ}t dddgdddggdddgd	�}t ||¡ d S )Nr   r   z
2020-03-05z2020-04-08T09:58:49+00:00ZhectorZaccountsÚdateÚnamer   Tr   r   )r   r   r   r   r   )r   Z	json_liner    r!   r   r   r   Útest_read_datetime   s    þþr%   c                  C   s|   d} t | ƒ} t| dd�}tddgddggddgd	�}t ||¡ d} t| dd�}tddgddggddgd	�}t ||¡ d S )
Nu5   {"a": "fooâ€�", "b": "bar"}
{"a": "foo", "b": "bar"}
Tr   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 t|dd�| ¡ t ddgddggddgd�} | jddd�}d}||ksÂt‚t 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\z4{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"}
)r   r   ÚAssertionErrorr   r   r   )r   r    r!   r   r   r   Útest_to_jsonl>   s    r,   c                  C   sD   t ddgddggddgd�} | jddd� d	¡}d}||ks@t‚d S )
Nr   r   r   r   r   r   Tr*   Ú
)r   r   Úcountr+   )r   Zactual_new_lines_countZexpected_new_lines_countr   r   r   Útest_to_jsonl_count_new_linesS   s    r/   Ú	chunksizer   g      ð?c              	   C   sH   t t| ƒdd�}t t| ƒd|d��}t |¡}W 5 Q R X t ||¡ d S )NTr   ©r   r0   )r   r   ÚpdÚconcatr   r   )r   r0   Ú	unchunkedÚreaderÚchunkedr   r   r   Útest_readjson_chunks[   s    r7   c              
   C   s@   d}t jt|d��$ tt| ƒddd��}W 5 Q R X W 5 Q R X d S )Nz*chunksize can only be passed if lines=True©ÚmatchFr   r1   ©ÚpytestÚraisesÚ
ValueErrorr   r   )r   ÚmsgÚ_r   r   r   Ú&test_readjson_chunksize_requires_linesh   s    r@   c               	   C   sx   t  dddœ¡} t| jddd�ƒ}t|ddd�}t| jddd�ƒ}t|dddd	��}t  |¡}W 5 Q R X t ||¡ d S )
Nr   r   r   Tr   r   ÚSeries)r   Útyp)r   rB   r0   )r2   rA   r   r   r   r3   r   Zassert_series_equal)ÚsZstrior4   r5   r6   r   r   r   Útest_readjson_chunks_serieso   s    rD   c              	   C   sN   t t| ƒddd��}t|ƒ}W 5 Q R X |d jdks8t‚|d jdksJt‚d S )NTr   r1   r   ©r   r   r   )r   r   )r   r   ÚlistÚshaper+   )r   r5   Úchunksr   r   r   Útest_readjson_each_chunk}   s    rI   c               
   C   s€   t  d¡�l} tdddgdddgdœƒ}|j| d	d
d� t| d	dd��}t |¡}W 5 Q R X t| d	d�}t  ||¡ W 5 Q R X d S )Nú	test.jsonr   r   r	   r
   r   r   r   Tr   r   r1   r   )r   Úensure_cleanr   r   r   r2   r3   r   )Úpathr   r5   r6   r4   r   r   r   Útest_readjson_chunks_from_file†   s    rM   c                 C   sš   t  d¡�†}t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�}|� | ¡  W 5 Q R X |jjjsŒt	d| › �ƒ‚W 5 Q R X d S )NrJ   r   r   r	   r
   r   r   r   Tr   r   ÚframeF)r   rB   ZdtypeZconvert_axesZconvert_datesZkeep_default_datesÚnumpyZprecise_floatZ	date_unitÚencodingr   r0   ÚcompressionÚnrowsz%didn't close stream with chunksize = )
r   rK   r   r   r   ÚreadZhandlesÚhandleÚclosedr+   )r0   rL   r   r5   r   r   r   Útest_readjson_chunks_closes�   s4    ñÿþrV   éÿÿÿÿgš™™™™™@r'   c              
   C   s@   d}t jt|d��$ tt| ƒd|d��}W 5 Q R X W 5 Q R X d S )Nz"'chunksize' must be an integer >=1r8   Tr1   r:   )r   r0   r>   r?   r   r   r   Útest_readjson_invalid_chunksize­   s    rX   r   c              	   C   sh   d}t dddgdddgdœƒ}t|d	| d
�}| d k	rN|� t |¡}W 5 Q R X 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   Tr1   zchunksize: )Úobj)r   r   r2   r3   r   r   )r0   ÚjÚorigÚtestr   r   r   Ú)test_readjson_chunks_multiple_empty_lines¶   s    r]   c              
   C   sp   t  d¡�\}|  ddd„ ¡ t|ddd��}| d¡ W 5 Q R X t|ƒ}td	d
giƒ}t  ||¡ W 5 Q R X d S )NrJ   zlocale.getpreferredencodingc                 S   s   dS )NÚcp949r   )Úlr   r   r   Ú<lambda>Ò   ó    z'test_readjson_unicode.<locals>.<lambda>Úwzutf-8)rP   u6   {"Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿":["Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€"]}u   Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿u   Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€)r   rK   ÚsetattrÚopenÚwriter   r   r   )ZmonkeypatchrL   Úfr    r!   r   r   r   Útest_readjson_unicodeÐ   s    rg   rR   c                 C   sJ   d}t |d| d�}tddddgdd	d
dgdœƒjd | … }t ||¡ d S )Nú[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}T©r   rR   r   r	   r   é   r   r
   r   é   ©r   r   )r   r   Úilocr   r   )rR   Újsonlr    r!   r   r   r   Útest_readjson_nrowsÛ   s    (ro   znrows,chunksizerE   )r
   r   c              	   C   sb   d}t |d| |d��}t |¡}W 5 Q R X tddddgdd	d
dgdœƒjd | … }t ||¡ d S )Nrh   T)r   rR   r0   r   r	   r   rj   r   r
   r   rk   rl   )r   r2   r3   r   rm   r   r   )rR   r0   rn   r5   r6   r!   r   r   r   Útest_readjson_nrows_chunksè   s
    (rp   c               	   C   s4   d} d}t jt|d�� t| ddd� W 5 Q R X d S )Nrh   z&nrows can only be passed if lines=Truer8   Fr   ri   )r;   r<   r=   r   )rn   r>   r   r   r   Ú"test_readjson_nrows_requires_linesö   s    rq   c              	   C   s¦   t ddggddgdgd�t ddggddgdgd�t d	d
ggddgdgd�g}| ddddƒ}t|ƒ ¡ }t|ddd��(}t|ƒD ]\}}t ||| ¡ q~W 5 Q R X d S )Nr   r   r   r   r   )r   Úindexr	   r
   r   r   Úior(   Údatazline_delimited.jsonTr1   )r   r   Úas_urir   Ú	enumerater   r   )ÚdatapathZdf_list_expectedZos_pathÚfile_urlZ
url_readerrr   Zchuckr   r   r   Ú"test_readjson_lines_chunks_fileurl  s    ýry   c                  C   sN   dd } G dd„ dƒ}|| ƒ}t tt|ddd�ƒƒdks<t‚|jd	ksJt‚d S )
Nz\{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}
iè  c                   @   s*   e Zd Zddœdd„Zdd„ Zdd„ ZdS )	z/test_chunksize_is_incremental.<locals>.MyReaderN)Úreturnc                 S   s   d| _ t|ƒ| _d S )Nr   )Ú
read_countr   Ústringio)ÚselfÚcontentsr   r   r   Ú__init__  s    z8test_chunksize_is_incremental.<locals>.MyReader.__init__c                 W   s   |  j d7  _ | jj|Ž S ©Nr   )r{   r|   rS   )r}   Úargsr   r   r   rS      s    z4test_chunksize_is_incremental.<locals>.MyReader.readc                 S   s   |  j d7  _ t| jƒS r€   )r{   Úiterr|   )r}   r   r   r   Ú__iter__$  s    z8test_chunksize_is_incremental.<locals>.MyReader.__iter__)Ú__name__Ú
__module__Ú__qualname__r   rS   rƒ   r   r   r   r   ÚMyReader  s   r‡   Téd   r1   r   é
   )ÚlenrF   r   r+   r{   )rn   r‡   r5   r   r   r   Útest_chunksize_is_incremental  s    üÿr‹   )%rs   r   Úpathlibr   r;   Zpandasr2   r   r   Zpandas._testingZ_testingr   Zpandas.io.json._jsonr   Zfixturer   r"   r%   r)   r,   r/   ÚmarkZparametrizer7   r@   rD   rI   rM   rV   rX   r]   rg   ro   rp   rq   ry   r‹   r   r   r   r   Ú<module>   sB   

	





