o
    i$&                     @   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   ^/var/www/edux/Edux_v2/venv/lib/python3.10/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)accountsdatenamer   Tr   r   )r   r%   r'   )r	   r&   r'   )r   r   r   r    r!   )r   	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   r0   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s:J tt|dd|  t ddgddggddgd} | jddd}d}||ksaJ 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   r2   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   Tr1   
)r   r   count)r   actual_new_lines_countexpected_new_lines_countr   r   r   test_to_jsonl_count_new_linesS   s   r7   	chunksizer   g      ?c                 C   s\   t t| dd}t t| d|d}t|}W d    n1 s!w   Y  t|| d S )NTr   r   r8   )r   r   pdconcatr    r!   )r   r8   	unchunkedreaderchunkedr   r   r   test_readjson_chunks[   s
   r?   c              	   C   sz   d}t jt|d* tt| ddd}W d    n1 sw   Y  W d    d S W d    d S 1 s6w   Y  d S )Nz*chunksize can only be passed if lines=TruematchFr	   r9   pytestraises
ValueErrorr   r   )r   msg_r   r   r   &test_readjson_chunksize_requires_linesh   s   "rH   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 s9w   Y  t|| d S )
Nr   r	   r   Tr   r   Series)r   typ)r   rJ   r8   )r:   rI   r   r   r   r;   r    assert_series_equal)sstrior<   r=   r>   r   r   r   test_readjson_chunks_serieso   s   rN   c                 C   sb   t t| ddd}t|}W d    n1 sw   Y  |d jdks&J |d jdks/J d S )NTr	   r9   r   r	   r	   r   )r   r	   )r   r   listshape)r   r=   chunksr   r   r   test_readjson_each_chunk}   s
   
rS   c               	   C   s   t dD} tg dg dd}|j| ddd t| ddd	}t|}W d    n1 s0w   Y  t| dd
}t || W d    d S 1 sLw   Y  d S )N	test.jsonr   r   r   Tr   r   r   r9   r   )r    ensure_cleanr   r   r   r:   r;   r!   )pathr   r=   r>   r<   r   r   r   test_readjson_chunks_from_file   s   "rW   c                 C   s   t dQ}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 s=w   Y  |jjjsNJ d|  W d    d S 1 sYw   Y  d S )NrT   r   r   r   Tr   r   frameF)r   rJ   dtypeconvert_axesconvert_dateskeep_default_datesnumpyprecise_float	date_unitencodingr   r8   compressionnrowsz%didn't close stream with chunksize = )	r    rU   r   r   r   readhandleshandleclosed)r8   rV   r   r=   r   r   r   test_readjson_chunks_closes   s8   
"rg   )r   g@r.   c              	   C   sz   d}t jt|d* tt| d|d}W d    n1 sw   Y  W d    d S W d    d S 1 s6w   Y  d S )Nz"'chunksize' must be an integer >=1r@   Tr9   rB   )r   r8   rF   rG   r   r   r   test_readjson_invalid_chunksize   s   "ri   )Nr   r	   c                 C   sx   d}t g dg dd}t|d| d}| d ur/| t|}W d    n1 s*w   Y  tj||d|  d d S )	NzF

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



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







    {"A":3,"B":6}
    r   r   r   Tr9   zchunksize: )obj)r   r   r:   r;   r    r!   )r8   jorigtestr   r   r   )test_readjson_chunks_multiple_empty_lines   s   rn   c              	   C   s   t d>}| ddd  t|ddd}|d W d    n1 s%w   Y  t|}td	d
gi}t || W d    d S 1 sFw   Y  d S )NrT   zlocale.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    rU   setattropenwriter   r   r!   )monkeypatchrV   fr"   r#   r   r   r   test_readjson_unicode   s   "rx   rb   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   rb   r   r
   r      r	   r   r      r   r   )r   r   ilocr    r!   )rb   jsonlr"   r#   r   r   r   test_readjson_nrows   s    r   znrows,chunksizerO   )r   r	   c                 C   sn   d}t |d| |d}t|}W d    n1 sw   Y  tg dg ddjd |  }t|| d S )Nry   T)r   rb   r8   r{   r}   r   )r   r:   r;   r   r   r    r!   )rb   r8   r   r=   r>   r#   r   r   r   test_readjson_nrows_chunks   s    r   c                  C   sJ   d} d}t jt|d t| ddd W d    d S 1 sw   Y  d S )Nry   z&nrows can only be passed if lines=Truer@   Fr	   rz   )rC   rD   rE   r   )r   rF   r   r   r   "test_readjson_nrows_requires_lines   s
   "r   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 d    d S 1 sWw   Y  d S )Nr   r	   r   r   r   )r   indexr
   r   r   r   ior/   datazline_delimited.jsonTr9   )r   r   as_urir   	enumerater    r!   )datapathdf_list_expectedos_pathfile_url
url_readerr   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s%J 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Zdd Zdd ZdS )
z/test_chunksize_is_incremental.<locals>.MyReaderreturnNc                 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   rc   )r   argsr   r   r   rc      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__)r   N)__name__
__module____qualname__r   rc   r   r   r   r   r   MyReader  s    
r   Td   r9   r   
   )lenrP   r   r   )r   r   r=   r   r   r   test_chunksize_is_incremental  s   r   )%r   r   pathlibr   rC   pandasr:   r   r   pandas._testing_testingr    pandas.io.json._jsonr   fixturer   r$   r,   r0   r2   r7   markparametrizer?   rH   rN   rS   rW   rg   ri   rn   rx   r   r   r   r   r   r   r   r   r   <module>   sD    

	





