a
    nÝEb&  ã                   @   sf  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g d!¢¡d"d#„ ƒZej dg d$¢¡d%d&„ ƒZd'd(„ Zej d)dd*g¡d+d,„ ƒZ ej d-d.d/g¡d0d1„ ƒZ!d2d3„ Z"d4d5„ Z#d6d7„ Z$dS )8é    )ÚStringIO)ÚPathN)Ú	DataFrameÚ	read_json)Ú
JsonReaderc                  C   s$   t g d¢g d¢dœƒ} | jddd�S )N©é   é   é   ©é   é   é   ©ÚAÚBTÚrecords©ÚlinesÚorient)r   Úto_json)Údf© r   úc/home/ja/django-apps/lartica_env/lib/python3.9/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   sb   t ddgddgdfgg d¢d�} | jdd	d
�}t|ƒ}t g d¢g d¢gg d¢d�}t ||¡ d S )Nr   r	   ú
2020-03-05ú2020-04-08T09:58:49+00:00Úhector)ZaccountsÚdateÚnamer   Tr   r   )r   r%   r'   )r	   r&   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:J ‚t d
dgddggddgd�} | jddd�}d}||kstJ ‚t t|dd�| ¡ t ddgddggddgd�} | jddd�}d}||ksÂJ ‚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   r    r!   r   )r   r"   r#   r   r   r   Útest_to_jsonl>   s    r0   c                  C   sD   t ddgddggddgd�} | jddd� d	¡}d}||ks@J ‚d S )
Nr   r	   r   r   r   r   Tr/   Ú
)r   r   Úcount)r   Zactual_new_lines_countZexpected_new_lines_countr   r   r   Útest_to_jsonl_count_new_linesS   s    r3   Ú	chunksizer   g      ð?c                 C   s\   t t| ƒdd�}t t| ƒd|d��}t |¡}W d   ƒ n1 sB0    Y  t ||¡ d S )NTr   ©r   r4   )r   r   ÚpdÚconcatr    r!   )r   r4   Ú	unchunkedÚreaderÚchunkedr   r   r   Útest_readjson_chunks[   s    (r;   c              	   C   sh   d}t jt|d��B tt| ƒddd��}W d   ƒ n1 s<0    Y  W d   ƒ n1 sZ0    Y  d S )Nz*chunksize can only be passed if lines=True©ÚmatchFr	   r5   ©ÚpytestÚraisesÚ
ValueErrorr   r   )r   ÚmsgÚ_r   r   r   Ú&test_readjson_chunksize_requires_linesh   s    rD   c                  C   sŒ   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 d   ƒ n1 sr0    Y  t ||¡ d S )
Nr   r	   r   Tr   r   ÚSeries)r   Útyp)r   rF   r4   )r6   rE   r   r   r   r7   r    Zassert_series_equal)ÚsZstrior8   r9   r:   r   r   r   Útest_readjson_chunks_serieso   s    (rH   c                 C   sb   t t| ƒddd��}t|ƒ}W d   ƒ n1 s00    Y  |d jdksLJ ‚|d jdks^J ‚d S )NTr	   r5   r   ©r	   r	   r   )r   r	   )r   r   ÚlistÚshape)r   r9   Úchunksr   r   r   Útest_readjson_each_chunk}   s    &rM   c               	   C   s¤   t  d¡�†} tg d¢g d¢dœƒ}|j| ddd� t| ddd	��}t |¡}W d   ƒ n1 s`0    Y  t| dd
�}t  ||¡ W d   ƒ n1 s–0    Y  d S )Nú	test.jsonr   r   r   Tr   r   r   r5   r   )r    Úensure_cleanr   r   r   r6   r7   r!   )Úpathr   r9   r:   r8   r   r   r   Útest_readjson_chunks_from_file†   s    (rQ   c                 C   s¾   t  d¡� }tg d¢g d¢dœƒ}|j|ddd� t|d dddddd	d	d d d| d d d
�}|� | ¡  W d   ƒ n1 sz0    Y  |jjjsœJ d| › �ƒ‚W d   ƒ n1 s°0    Y  d S )NrN   r   r   r   Tr   r   ÚframeF)r   rF   ZdtypeZconvert_axesZconvert_datesZkeep_default_datesÚnumpyZprecise_floatZ	date_unitÚencodingr   r4   ÚcompressionÚnrowsz%didn't close stream with chunksize = )	r    rO   r   r   r   ÚreadZhandlesÚhandleÚclosed)r4   rP   r   r9   r   r   r   Útest_readjson_chunks_closes�   s4    ñ&ÿþrZ   )r   éÿÿÿÿgš™™™™™@r,   c              	   C   sh   d}t jt|d��B tt| ƒd|d��}W d   ƒ n1 s<0    Y  W d   ƒ n1 sZ0    Y  d S )Nz"'chunksize' must be an integer >=1r<   Tr5   r>   )r   r4   rB   rC   r   r   r   Útest_readjson_invalid_chunksize­   s    r\   )Nr   r	   c                 C   sx   d}t g d¢g d¢dœƒ}t|d| d�}| d ur^|� t |¡}W d   ƒ n1 sT0    Y  tj||d| › �d� d S )	NzF

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



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







    {"A":3,"B":6}
    r   r   r   Tr5   zchunksize: )Úobj)r   r   r6   r7   r    r!   )r4   ÚjÚorigÚtestr   r   r   Ú)test_readjson_chunks_multiple_empty_lines¶   s    (ra   c              	   C   s˜   t  d¡�z}|  ddd„ ¡ t|ddd��}| d¡ W d   ƒ n1 sJ0    Y  t|ƒ}td	d
giƒ}t  ||¡ W d   ƒ n1 sŠ0    Y  d S )NrN   zlocale.getpreferredencodingc                 S   s   dS )NÚcp949r   )Úlr   r   r   Ú<lambda>Ò   ó    z'test_readjson_unicode.<locals>.<lambda>Úwzutf-8)rT   u6   {"Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿":["Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€"]}u   Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿u   Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€)r    rO   ÚsetattrÚopenÚwriter   r   r!   )ZmonkeypatchrP   Úfr"   r#   r   r   r   Útest_readjson_unicodeÐ   s    (rk   rV   r	   c                 C   sB   d}t |d| d�}tg d¢g d¢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   rV   ©r   r
   r   é   ©r	   r   r   é   ©r   r   )r   r   Úilocr    r!   )rV   Újsonlr"   r#   r   r   r   Útest_readjson_nrowsÛ   s     ru   znrows,chunksizerI   )r   r	   c                 C   sn   d}t |d| |d��}t |¡}W d   ƒ n1 s40    Y  tg d¢g d¢dœƒjd | … }t ||¡ d S )Nrl   T)r   rV   r4   rn   rp   rr   )r   r6   r7   r   rs   r    r!   )rV   r4   rt   r9   r:   r#   r   r   r   Útest_readjson_nrows_chunksè   s
    ( rv   c                  C   sH   d} d}t jt|d�� t| ddd� W d   ƒ n1 s:0    Y  d S )Nrl   z&nrows can only be passed if lines=Truer<   Fr	   rm   )r?   r@   rA   r   )rt   rB   r   r   r   Ú"test_readjson_nrows_requires_linesö   s    rw   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��2}t|ƒD ]\}}t ||| ¡ q~W d   ƒ n1 s¬0    Y  d S )Nr   r	   r   r   r   )r   Úindexr
   r   r   r   Úior-   Údatazline_delimited.jsonTr5   )r   r   Úas_urir   Ú	enumerater    r!   )ÚdatapathZdf_list_expectedZos_pathÚfile_urlZ
url_readerrx   Zchuckr   r   r   Ú"test_readjson_lines_chunks_fileurl  s    ýr   c                  C   sN   dd } G dd„ dƒ}|| ƒ}t tt|ddd�ƒƒdks<J ‚|jd	ksJJ ‚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„ Zdd„ Zdd„ ZdS )z/test_chunksize_is_incremental.<locals>.MyReaderc                 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�   rW   )r‚   Úargsr   r   r   rW      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__N)Ú__name__Ú
__module__Ú__qualname__r„   rW   rˆ   r   r   r   r   ÚMyReader  s   rŒ   Téd   r5   r   é
   )ÚlenrJ   r   r€   )rt   rŒ   r9   r   r   r   Útest_chunksize_is_incremental  s    üÿr�   )%ry   r   Úpathlibr   r?   Zpandasr6   r   r   Zpandas._testingZ_testingr    Zpandas.io.json._jsonr   Zfixturer   r$   r*   r.   r0   r3   ÚmarkZparametrizer;   rD   rH   rM   rQ   rZ   r\   ra   rk   ru   rv   rw   r   r�   r   r   r   r   Ú<module>   sB   

	





