o
    dF                     @   s  d dl mZ 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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d0d1d2gd3d4 Z$d5d6 Z%d7d8 Z&d9d: Z'ejd;g d<d=d> Z(d?d@ Z)ejdAdBdCgdDdE Z*dFdG Z+dHdI Z,dJdK Z-dLdM Z.dS )N    )StringIO)Path)IteratorN)	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   h/var/www/html/visualizacion-main/env/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   s>   t | ddddd|d}tg dg dd	}t|| d S )
Niojsondataline_delimited.jsonTr   engine)r	   r   r   )r
   r   r   r   r   r!   )datapathr,   r$   r%   r   r   r   test_read_jsonl_engine_pyarrow   s   r/   c                 C   s   |dkrd}| j tjj|td tddgddgdfgg d	d
}|jddd}t||d}tg dg dgg d	d
}t	
|| d S )NpyarrowzEPyarrow only supports a file path as an input and line delimited jsonreasonraisesr	   r
   
2020-03-052020-04-08T09:58:49+00:00hector)accountsdatenamer   Tr   r   r,   )r	   r4   r6   )r
   r5   r6   )node
add_markerpytestmarkxfail
ValueErrorr   r   r   r"   r#   )requestr,   r2   r   	json_liner$   r%   r   r   r   test_read_datetime(   s   rC   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#   )r(   r$   r%   r   r   r   test_read_jsonl_unicode_chars<   s   rF   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}rD   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_jsonlN   s   rH   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   TrG   
)r   r   count)r   actual_new_lines_countexpected_new_lines_countr   r   r   test_to_jsonl_count_new_linesc   s   rM   	chunksizer	   g      ?c                 C   s   |dkrd}| j tjj|td tt|dd}tt|d||d}t	|}W d    n1 s4w   Y  t
|| d S )Nr0   mPyarrow only supports a file path as an input and line delimited jsonand doesn't support chunksize parameter.r1   Tr   r   rN   r,   )r;   r<   r=   r>   r?   r@   r   r   pdconcatr"   r#   )rA   r   rN   r,   r2   	unchunkedreaderchunkedr   r   r   test_readjson_chunksk   s   rV   c              	   C   s|   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 s7w   Y  d S )Nz*chunksize can only be passed if lines=TruematchFr
   rP   r=   r3   r@   r   r   )r   r,   msg_r   r   r   &test_readjson_chunksize_requires_lines   s   "r\   c                 C   s   |dkrd}| j tjj|d 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 sLw   Y  t|| d S )Nr0   rO   )r2   r	   r
   r   Tr   r   Series)r   typr,   )r   r^   rN   r,   )r;   r<   r=   r>   r?   rQ   r]   r   r   r   rR   r"   assert_series_equal)rA   r,   r2   sstriorS   rT   rU   r   r   r   test_readjson_chunks_series   s   
rb   c                 C   s   |dkrd}| j tjj|td tt|dd|d}t|}W d    n1 s+w   Y  |d j	dks9J |d	 j	d
ksBJ d S )Nr0   rO   r1   Tr
   rP   r   r
   r
   r	   )r	   r
   )
r;   r<   r=   r>   r?   r@   r   r   listshape)rA   r   r,   r2   rT   chunksr   r   r   test_readjson_each_chunk   s   
rg   c              	   C   s   |dkrd}| j tjj|td tdF}tg dg dd}|j	|dd	d
 t
|dd|d}t|}W d    n1 sCw   Y  t
|d|d}t|| W d    d S 1 s`w   Y  d S )Nr0   rO   r1   	test.jsonr   r   r   Tr   r   r	   rP   r+   )r;   r<   r=   r>   r?   r@   r"   ensure_cleanr   r   r   rQ   rR   r#   )rA   r,   r2   pathr   rT   rU   rS   r   r   r   test_readjson_chunks_from_file   s   "rk   c                 C   s   t dP}tg dg dd}|j|ddd t|d dddddd	d d d| d d d
}| |  W d    n1 s<w   Y  |jjjsMJ d|  W d    d S 1 sXw   Y  d S )Nrh   r   r   r   Tr   r   frameF)r   r^   dtypeconvert_axesconvert_dateskeep_default_datesprecise_float	date_unitencodingr   rN   compressionnrowsz%didn't close stream with chunksize = )	r"   ri   r   r   r   readhandleshandleclosed)rN   rj   r   rT   r   r   r   test_readjson_chunks_closes   s6   
"rz   )r   g@rE   c              	   C   s|   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 s7w   Y  d S )Nz"'chunksize' must be an integer >=1rW   TrP   rY   )r   rN   r,   rZ   r[   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 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   Tr   rN   zchunksize: )obj)r   r   rQ   rR   r"   r#   )rN   jorigtestr   r   r   )test_readjson_chunks_multiple_empty_lines   s   r   c              	   C   s   |dkrd}| j tjj|td td@}|ddd  t	|dd	d
}|
d W d    n1 s7w   Y  t||d}tddgi}t|| W d    d S 1 sZw   Y  d S )Nr0   rO   r1   rh   zlocale.getpreferredencodingc                 S   s   dS )Ncp949r   )do_setlocaler   r   r   <lambda>  s    z'test_readjson_unicode.<locals>.<lambda>wzutf-8)rs   u6   {"£©µÀÆÖÞßéöÿ":["АБВГДабвгд가"]}r:   u   £©µÀÆÖÞßéöÿu   АБВГДабвгд가)r;   r<   r=   r>   r?   r@   r"   ri   setattropenwriter   r   r#   )rA   monkeypatchr,   r2   rj   fr$   r%   r   r   r   test_readjson_unicode	  s   "r   ru   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   ru   r	   r   r      r
   r   r      r-   )r   r   ilocr"   r#   )ru   r,   jsonlr$   r%   r   r   r   test_readjson_nrows  s    r   znrows,chunksizerc   )r   r
   c           	      C   s   |dkrd}| j tjj|td d}t|d|||d}t|}W d    n1 s-w   Y  t	g dg dd	j
d | }t|| d S )
Nr0   rO   r1   r   T)r   ru   rN   r,   r   r   r-   )r;   r<   r=   r>   r?   r@   r   rQ   rR   r   r   r"   r#   )	rA   ru   rN   r,   r2   r   rT   rU   r%   r   r   r   test_readjson_nrows_chunks)  s   
 r   c                 C   sL   d}d}t jt|d t|dd| d W d    d S 1 sw   Y  d S )Nr   z&nrows can only be passed if lines=TruerW   Fr
   )r   ru   r,   )r=   r3   r@   r   )r,   r   rZ   r   r   r   "test_readjson_nrows_requires_linesA  s
   "r   c           
      C   s   |dkrd}| j tjj|td 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|	||  qRW d    d S 1 sjw   Y  d S )Nr0   rO   r1   r	   r
   r   r   r   )r    indexr   r   r   r   r'   r(   r)   r*   TrP   )r;   r<   r=   r>   r?   r@   r   r   as_urir   	enumerater"   r#   )
rA   r.   r,   r2   df_list_expectedos_pathfile_url
url_readerr   chuckr   r   r   "test_readjson_lines_chunks_fileurlM  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ef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__o  s   z8test_chunksize_is_incremental.<locals>.MyReader.__init__c                 W   s   |  j d7  _ | jj| S Nr	   )r   r   rv   )r   argsr   r   r   rv   s  s   z4test_chunksize_is_incremental.<locals>.MyReader.readc                 S   s   |  j d7  _ t| jS r   )r   iterr   )r   r   r   r   __iter__w  s   
z8test_chunksize_is_incremental.<locals>.MyReader.__iter__)r   N)__name__
__module____qualname__r   rv   r   r   r   r   r   r   MyReadern  s    
r   Td   r}   r	   
   )lenrd   r   r   )r   r   rT   r   r   r   test_chunksize_is_incrementald  s   r   orient_)splitr   tablec                 C   s\   t ddgddgd}d}tjt|d |jd| d W d    d S 1 s'w   Y  d S )	Nr	   r
   r   r   col1col2Omode='a' \(append\) is only supported whenlines is True and orient is 'records'rW   )moder   r   r=   r3   r@   r   )r   r   rZ   r   r   r   test_to_json_append_orient  s   "r   c                  C   s^   t ddgddgd} d}tjt|d | jddd	d
 W d    d S 1 s(w   Y  d S )Nr	   r
   r   r   r   r   rW   Fr   r   r   r   r   )r   rZ   r   r   r   test_to_json_append_lines  s   "r   mode_rxc                 C   sf   t ddgddgd}d|  d}tjt|d |j| d	d
d W d    d S 1 s,w   Y  d S )Nr	   r
   r   r   r   zmode=z@ is not a valid option.Only 'w' and 'a' are currently supported.rW   Fr   r   r   )r   r   rZ   r   r   r   test_to_json_append_mode  s   
"r   c                  C   s   t ddgddgd} t ddgdd	gd}t g d
g dd}td&}| j|ddd |j|dddd t|dd}t|| W d    d S 1 sOw   Y  d S )Nr	   r
   r   r   r   r   r   cd)r	   r
   r   r   )r   r   r   r   rh   Tr   r   r   r   r   r"   ri   r   r   r#   )df1df2r%   rj   r$   r   r   r   -test_to_json_append_output_consistent_columns  s   "r   c                  C   s   t ddgddgd} t ddgdd	gd
}t g dg dg dd}td'}| j|dddd |j|dddd t|dd}t|| W d    d S 1 sSw   Y  d S )Nr	   r
   r   r   r   er   !#r   col3)r	   r
   NN)r   r   r   r   )NNr   r   )r   r   r   rh   Tr   r   r   r   )r   df3r%   rj   r$   r   r   r   /test_to_json_append_output_inconsistent_columns  s   "r   c                  C   s  t ddgddgd} t ddgdd	gd}t d
dgddgd}t dddgi}t g dg dg dg ddddi}td9}| j|dddd |j|dddd |j|dddd |j|dddd t|dd}t|| W d    d S 1 sw   Y  d S )Nr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   col4TF)r	   r
   r   r   NNNN)r   r   r   r   r   r   NN)NNNNr   r   NN)NNNNNNTF)r   r   r   r   floatrh   r   r   r   r   astyper"   ri   r   r   r#   r   r   r   df4r%   rj   r$   r   r   r   ,test_to_json_append_output_different_columns  s*   
"r   c                  C   s  t ddgddgd} t ddgdd	gd}t d
dgddgd}t dddgi}t g dg dg dg ddddi}td9}|j|dddd |j|dddd |j|dddd | j|dddd t|dd}t|| W d    d S 1 sw   Y  d S )Nr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   TF)TFNNNNNN)NNr   r   r   r   r   r   )NNr   r   NNNN)NNNNr   r   r	   r
   )r   r   r   r   r   rh   r   r   r   r   r   r   r   r   6test_to_json_append_output_different_columns_reordered  s*   
"r   )/r'   r   pathlibr   typingr   r=   pandasrQ   r   r   pandas._testing_testingr"   pandas.io.json._jsonr   fixturer   r&   r/   rC   rF   rH   rM   r>   parametrizerV   r\   rb   rg   rk   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sZ    


	







