a
    é´«jƒI  ã                   @   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	Z
d dl	mZmZ d dlmZ d dlmZ ej d¡Zejdd	„ ƒZejd
dgd�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&d0d1„ Z'ej d2dd3g¡d4d5„ ƒZ(ej d6d7d8g¡d9d:„ ƒZ)d;d<„ Z*d=d>„ Z+d?d@„ Z,ej dAg dB¢¡dCdD„ ƒZ-dEdF„ Z.ej dGdHdIg¡dJdK„ ƒZ/dLdM„ Z0dNdO„ Z1dPdQ„ Z2dRdS„ Z3dS )Té    )ÚIterator)ÚStringIO)ÚPathN)Ú	DataFrameÚ	read_json)Ú
JsonReaderz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                  C   s$   t g d¢g d¢dœƒ} | jddd�S )N©é   é   é   ©é   é   é   ©ÚAÚBTÚrecords©ÚlinesÚorient)r   Úto_json)Údf© r   úb/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/json/test_readlines.pyÚlines_json_df   s    r   ZujsonÚpyarrow)Úparamsc                 C   s   | j dkrt d¡ | j S )Nr   zpyarrow.json)ÚparamÚpytestZimportorskip)Úrequestr   r   r   Úengine   s    

r!   c                  C   s<   t 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   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   r!   )r	   r   r   )r
   r   r   ©r#   r$   )r   r   r'   r(   )Údatapathr!   r)   r*   r   r   r   Útest_read_jsonl_engine_pyarrow*   s    ýr3   c                 C   s¦   |dkr"d}|   tjj|td�¡ tddgddgdfgg d	¢d
�}|jddd�}|dkrjtt|ƒ|d�}ntt|ƒ|d�}tg d¢g d¢gg d	¢d
�}t	 
||¡ d S )Nr   zEPyarrow 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)ZaccountsÚdateÚnamer%   Tr   r   ©r!   )r	   r7   r9   )r
   r8   r9   )Úapplymarkerr   ÚmarkÚxfailÚ
ValueErrorr   r   r   r   r'   r(   )r    r!   r5   r   Z	json_liner)   r*   r   r   r   Útest_read_datetime4   s     þþrA   c                  C   s€   d} t | ƒ} t| dd�}tddgddggddgd	�}t ||¡ d} t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_charsL   s    rD   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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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}rB   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   r   Útest_to_jsonl^   s    rF   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   TrE   Ú
)r   r   Úcount)r   Zactual_new_lines_countZexpected_new_lines_countr   r   r   Útest_to_jsonl_count_new_liness   s    rI   Ú	chunksizer	   g      ð?c                 C   s€   |dkr"d}|   tjj|td�¡ tt|ƒdd�}tt|ƒd||d��}t |¡}W d   ƒ n1 sf0    Y  t	 
||¡ d S )Nr   úmPyarrow only supports a file path as an input and line delimited jsonand doesn't support chunksize parameter.r4   Tr"   ©r   rJ   r!   )r=   r   r>   r?   r@   r   r   ÚpdÚconcatr'   r(   )r    r   rJ   r!   r5   Ú	unchunkedÚreaderÚchunkedr   r   r   Útest_readjson_chunks{   s    ÿÿ(rR   c              	   C   sj   d}t jt|d��D tt| ƒdd|d��}W d   ƒ n1 s>0    Y  W d   ƒ n1 s\0    Y  d S )Nz*chunksize can only be passed if lines=True©ÚmatchFr
   rL   ©r   r6   r@   r   r   )r   r!   ÚmsgÚ_r   r   r   Ú&test_readjson_chunksize_requires_lines’   s    ÿrX   c                 C   s°   |dkr d}|   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 s–0    Y  t
 ||¡ d S )Nr   rK   )r5   r	   r
   r   Tr   r   ÚSeries)r   Útypr!   )r   rZ   rJ   r!   )r=   r   r>   r?   rM   rY   r   r   r   rN   r'   Zassert_series_equal)r    r!   r5   ÚsZstriorO   rP   rQ   r   r   r   Útest_readjson_chunks_series›   s    ÿ
ÿ(r\   c                 C   s†   |dkr"d}|   tjj|td�¡ tt|ƒdd|d��}t|ƒ}W d   ƒ n1 sT0    Y  |d jdkspJ ‚|d	 jd
ks‚J ‚d S )Nr   rK   r4   Tr
   rL   r   ©r
   r
   r	   )r	   r
   )	r=   r   r>   r?   r@   r   r   ÚlistÚshape)r    r   r!   r5   rP   Úchunksr   r   r   Útest_readjson_each_chunk³   s    ÿÿ&ra   c              	   C   sÊ   |dkr"d}|   tjj|td�¡ 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 )Nr   rK   r4   ú	test.jsonr   r   r   Tr   r   r	   rL   r0   )r=   r   r>   r?   r@   r'   Úensure_cleanr   r   r   rM   rN   r(   )r    r!   r5   Úpathr   rP   rQ   rO   r   r   r   Útest_readjson_chunks_from_fileÆ   s    ÿ(re   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
�}|� | ¡  W d   ƒ n1 sx0    Y  |jjjsšJ d| › �ƒ‚W d   ƒ n1 s®0    Y  d S )Nrb   r   r   r   Tr   r   ÚframeF)r   rZ   ZdtypeZconvert_axesZconvert_datesZkeep_default_datesZprecise_floatZ	date_unitÚencodingr   rJ   ÚcompressionÚnrowsz%didn't close stream with chunksize = )	r'   rc   r   r   r   ÚreadZhandlesÚhandleÚclosed)rJ   rd   r   rP   r   r   r   Útest_readjson_chunks_closesØ   s2    ò&ÿþrm   )r   éÿÿÿÿgš™™™™™@rC   c              	   C   sj   d}t jt|d��D tt| ƒd||d��}W d   ƒ n1 s>0    Y  W d   ƒ n1 s\0    Y  d S )Nz"'chunksize' must be an integer >=1rS   TrL   rU   )r   rJ   r!   rV   rW   r   r   r   Útest_readjson_invalid_chunksizeô   s    ÿro   )Nr	   r
   c                 C   s|   d}t g d¢g d¢dœƒ}tt|ƒd| d�}| d urb|� t |¡}W d   ƒ n1 sX0    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   rJ   zchunksize: )Úobj)r   r   r   rM   rN   r'   r(   )rJ   ÚjÚorigÚtestr   r   r   Ú)test_readjson_chunks_multiple_empty_linesÿ   s    (ru   c              	   C   s¾   |dkr"d}|   tjj|td�¡ t d¡�~}| ddd„ ¡ t|dd	d
��}| 	d¡ W d   ƒ n1 sl0    Y  t
||d�}tddgiƒ}t ||¡ W d   ƒ n1 s°0    Y  d S )Nr   rK   r4   rb   zlocale.getpreferredencodingc                 S   s   dS )NÚcp949r   )Údo_setlocaler   r   r   Ú<lambda>#  ó    z'test_readjson_unicode.<locals>.<lambda>Úwzutf-8)rg   u6   {"Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿":["Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€"]}r<   u   Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿u   Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€)r=   r   r>   r?   r@   r'   rc   ÚsetattrÚopenÚwriter   r   r(   )r    Zmonkeypatchr!   r5   rd   Úfr)   r*   r   r   r   Útest_readjson_unicode  s    ÿ(r   ri   r
   c                 C   sF   d}t 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   ri   ©r	   r   r   é   ©r
   r   r   é   r1   )r   r   r   Úilocr'   r(   )ri   r!   Újsonlr)   r*   r   r   r   Útest_readjson_nrows,  s     r‡   znrows,chunksizer]   )r   r
   c           	      C   sÜ   |dkr"d}|   tjj|td�¡ d}|dkrptt|ƒd|||d��}t |¡}W d   ƒ q¬1 sd0    Y  n<t|d|||d��}t |¡}W d   ƒ n1 s¢0    Y  t	g d¢g d¢d	œƒj
d |… }t ||¡ d S )
Nr   rK   r4   r€   T)r   ri   rJ   r!   r�   rƒ   r1   )r=   r   r>   r?   r@   r   r   rM   rN   r   r…   r'   r(   )	r    ri   rJ   r!   r5   r†   rP   rQ   r*   r   r   r   Útest_readjson_nrows_chunks9  s$    ÿÿ*
ÿ( rˆ   c                 C   sJ   d}d}t jt|d��  t|dd| d� W d   ƒ n1 s<0    Y  d S )Nr€   z&nrows can only be passed if lines=TruerS   Fr
   )r   ri   r!   )r   r6   r@   r   )r!   r†   rV   r   r   r   Ú"test_readjson_nrows_requires_linesX  s    r‰   c           
      C   sÞ   |dkr"d}|   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��2}t	|ƒD ]\}}	t
 |	|| ¡ q¢W d   ƒ n1 sÐ0    Y  d S )Nr   rK   r4   r	   r
   r#   r$   r   )r&   Úindexr   r   r   r   r,   r-   r.   r/   TrL   )r=   r   r>   r?   r@   r   r   Úas_urir   Ú	enumerater'   r(   )
r    r2   r!   r5   Zdf_list_expectedZos_pathÚfile_urlZ
url_readerrŠ   Zchuckr   r   r   Ú"test_readjson_lines_chunks_fileurld  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                   @   s0   e Zd Zddœdd„Zdd„ Zedœ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‘   rj   )r’   Úargsr   r   r   rj   Š  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”   rj   r   r˜   r   r   r   r   ÚMyReader…  s   rœ   Téd   rp   r	   é
   )Úlenr^   r   r�   )r†   rœ   rP   r   r   r   Útest_chunksize_is_incremental{  s    üÿr    Úorient_)ÚsplitrŠ   Útablec                 C   sZ   t ddgddgdœƒ}d}tjt|d�� |jd| d� W d   ƒ n1 sL0    Y  d S )	Nr	   r
   r#   r$   ©Úcol1Úcol2úPmode='a' \(append\) is only supported when lines is True and orient is 'records'rS   )Úmoder   ©r   r   r6   r@   r   )r¡   r   rV   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   ƒ n1 sN0    Y  d S )Nr	   r
   r#   r$   r¤   r§   rS   Fr   ©r¨   r   r   r©   )r   rV   r   r   r   Útest_to_json_append_lines¤  s
    ÿr¬   Úmode_ÚrÚxc                 C   sd   t ddgddgdœƒ}d| › d�}tjt|d��  |j| d	d
d� W d   ƒ n1 sV0    Y  d S )Nr	   r
   r#   r$   r¤   zmode=z@ is not a valid option.Only 'w' and 'a' are currently supported.rS   Fr   r«   r©   )r­   r   rV   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}| j|ddd� |j|dddd� t|dd�}t ||¡ W d   ƒ n1 sœ0    Y  d S )Nr	   r
   r#   r$   r¤   r   r   ÚcÚd)r	   r
   r   r   )r#   r$   r±   r²   rb   Tr   r   r«   r"   )r   r'   rc   r   r   r(   )Údf1Údf2r*   rd   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¢tjtjdd	gdœƒ}t d¡�L}| j|dddd� |j|dddd� t|dd�}t ||¡ W d   ƒ n1 s¬0    Y  d S )Nr	   r
   r#   r$   r¤   Úer~   ú!ú#©r¦   Úcol3)r	   r
   NN)r#   r$   r¶   r~   )r¥   r¦   rº   rb   Tr   r«   r"   )r   ÚnpÚnanr'   rc   r   r   r(   )r³   Údf3r*   rd   r)   r   r   r   Ú/test_to_json_append_output_inconsistent_columnsÏ  s    ýÿr¾   c                  C   s6  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¢dddd	d
dtjtjgtjtjtjtjddtjtjgg d¢dœƒ ddi¡}t d¡�p}| 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   ƒ n1 �s(0    Y  d S )Nr	   r
   r#   r$   r¤   r   r   r±   r²   r¶   r~   r·   r¸   r¹   Úcol4TF)r	   r
   r   r   NNNN)NNNNNNTF)r¥   r¦   rº   r¿   Úfloatrb   r   r«   r"   ©	r   r»   r¼   Zastyper'   rc   r   r   r(   ©r³   r´   r½   Zdf4r*   rd   r)   r   r   r   Ú,test_to_json_append_output_different_columnsç  s(    üÿùrÃ   c                  C   s6  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¢tjtjd
ddd	ddgtjtjddtjtjtjtjgg d¢dœƒ ddi¡}t d¡�p}|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   ƒ n1 �s(0    Y  d S )Nr	   r
   r#   r$   r¤   r   r   r±   r²   r¶   r~   r·   r¸   r¹   r¿   TF)TFNNNNNN)NNNNr   r   r	   r
   )r¿   r¦   rº   r¥   rÀ   rb   r   r«   r"   rÁ   rÂ   r   r   r   Ú6test_to_json_append_output_different_columns_reordered  s(    üÿùrÄ   )4Úcollections.abcr   r,   r   Úpathlibr   Únumpyr»   r   ZpandasrM   r   r   Zpandas._testingZ_testingr'   Zpandas.io.json._jsonr   r>   ÚfilterwarningsZ
pytestmarkZfixturer   r!   r+   r3   rA   rD   rF   rI   ZparametrizerR   rX   r\   ra   re   rm   ro   ru   r   r‡   rˆ   r‰   rŽ   r    rª   r¬   r°   rµ   r¾   rÃ   rÄ   r   r   r   r   Ú<module>   sd   ÿ



	


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