o
    Û­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   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/io/json/test_readlines.pyÚlines_json_df   s   r   ÚujsonÚpyarrow)Úparamsc                 C   s   | j dkr
t d¡ | j S )Nr   zpyarrow.json)ÚparamÚpytestÚ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   ýr5   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r5t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)ÚaccountsÚdateÚnamer'   Tr   r   ©r#   )r	   r9   r;   )r
   r:   r;   )Úapplymarkerr    ÚmarkÚxfailÚ
ValueErrorr   r   r   r   r)   r*   )r"   r#   r7   r   Ú	json_liner+   r,   r   r   r   Útest_read_datetime4   s    þþrE   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   rH   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t|ƒdd�| ¡ t ddgddggddgd�} | jddd�}d}||kscJ ‚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}rF   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   rJ   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   TrI   Ú
)r   r   Úcount)r   Úactual_new_lines_countÚexpected_new_lines_countr   r   r   Útest_to_jsonl_count_new_liness   s   rO   Ú	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 s3w   Y  t	 
||¡ d S )Nr   úmPyarrow only supports a file path as an input and line delimited jsonand doesn't support chunksize parameter.r6   Tr$   ©r   rP   r#   )r@   r    rA   rB   rC   r   r   ÚpdÚconcatr)   r*   )r"   r   rP   r#   r7   Ú	unchunkedÚreaderÚchunkedr   r   r   Útest_readjson_chunks{   s   ÿÿýrX   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
   rR   ©r    r8   rC   r   r   )r   r#   ÚmsgÚ_r   r   r   Ú&test_readjson_chunksize_requires_lines’   s   ÿýÿ"ÿr^   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 sKw   Y  t
 ||¡ d S )Nr   rQ   )r7   r	   r
   r   Tr   r   ÚSeries)r   Útypr#   )r   r`   rP   r#   )r@   r    rA   rB   rS   r_   r   r   r   rT   r)   Úassert_series_equal)r"   r#   r7   ÚsÚstriorU   rV   rW   r   r   r   Útest_readjson_chunks_series›   s   ÿ
ÿýrd   c                 C   s†   |dkrd}|   tjj|td�¡ tt|ƒdd|d��}t|ƒ}W d   ƒ n1 s*w   Y  |d jdks8J ‚|d	 jd
ksAJ ‚d S )Nr   rQ   r6   Tr
   rR   r   ©r
   r
   r	   )r	   r
   )	r@   r    rA   rB   rC   r   r   ÚlistÚshape)r"   r   r#   r7   rV   Úchunksr   r   r   Útest_readjson_each_chunk³   s   ÿÿ
ýri   c              	   C   sÌ   |dkrd}|   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 sBw   Y  t	|d|d�}t ||¡ W d   ƒ d S 1 s_w   Y  d S )Nr   rQ   r6   ú	test.jsonr   r   r   Tr   r   r	   rR   r2   )r@   r    rA   rB   rC   r)   Úensure_cleanr   r   r   rS   rT   r*   )r"   r#   r7   Úpathr   rV   rW   rU   r   r   r   Útest_readjson_chunks_from_fileÆ   s   ÿÿ"úrm   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 )Nrj   r   r   r   Tr   r   ÚframeF)r   r`   ÚdtypeÚconvert_axesÚconvert_datesÚkeep_default_datesÚprecise_floatÚ	date_unitÚencodingr   rP   ÚcompressionÚnrowsz%didn't close stream with chunksize = )	r)   rk   r   r   r   ÚreadÚhandlesÚhandleÚclosed)rP   rl   r   rV   r   r   r   Útest_readjson_chunks_closesØ   s6   ò
ÿÿþ"ër|   )r   éÿÿÿÿgš™™™™™@rG   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 >=1rY   TrR   r[   )r   rP   r#   r\   r]   r   r   r   Útest_readjson_invalid_chunksizeô   s   ÿýÿ"ÿr~   )Nr	   r
   c                 C   s|   d}t g d¢g d¢dœƒ}tt|ƒd| d�}| d ur1|� 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   rP   zchunksize: )Úobj)r   r   r   rS   rT   r)   r*   )rP   ÚjÚorigÚtestr   r   r   Ú)test_readjson_chunks_multiple_empty_linesÿ   s   ÿr„   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 s6w   Y  t
||d�}tddgiƒ}t ||¡ W d   ƒ d S 1 sYw   Y  d S )Nr   rQ   r6   rj   zlocale.getpreferredencodingc                 S   s   dS )NÚcp949r   )Údo_setlocaler   r   r   Ú<lambda>#  s    z'test_readjson_unicode.<locals>.<lambda>Úwzutf-8)ru   u6   {"Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿":["Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€"]}r?   u   Â£Â©ÂµÃ€Ã†Ã–ÃžÃŸÃ©Ã¶Ã¿u   Ð�Ð‘Ð’Ð“Ð”Ð°Ð±Ð²Ð³Ð´ê°€)r@   r    rA   rB   rC   r)   rk   ÚsetattrÚopenÚwriter   r   r*   )r"   Úmonkeypatchr#   r7   rl   Úfr+   r,   r   r   r   Útest_readjson_unicode  s   ÿÿ"ùrŽ   rw   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   rw   ©r	   r   r   é   ©r
   r   r   é   r3   )r   r   r   Úilocr)   r*   )rw   r#   Újsonlr+   r,   r   r   r   Útest_readjson_nrows,  s    r–   znrows,chunksizere   )r   r
   c           	      C   sÜ   |dkrd}|   tjj|td�¡ d}|dkr8tt|ƒd|||d��}t |¡}W d   ƒ n1 s2w   Y  nt|d|||d��}t |¡}W d   ƒ n1 sQw   Y  t	g d¢g d¢d	œƒj
d |… }t ||¡ d S )
Nr   rQ   r6   r�   T)r   rw   rP   r#   r�   r’   r3   )r@   r    rA   rB   rC   r   r   rS   rT   r   r”   r)   r*   )	r"   rw   rP   r#   r7   r•   rV   rW   r,   r   r   r   Útest_readjson_nrows_chunks9  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=TruerY   Fr
   )r   rw   r#   )r    r8   rC   r   )r#   r•   r\   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��}t	|ƒD ]\}}	t
 |	|| ¡ qQW d   ƒ d S 1 siw   Y  d S )Nr   rQ   r6   r	   r
   r%   r&   r   )r(   Úindexr   r   r   r   r.   r/   r0   r1   TrR   )r@   r    rA   rB   rC   r   r   Úas_urir   Ú	enumerater)   r*   )
r"   r4   r#   r7   Údf_list_expectedÚos_pathÚfile_urlÚ
url_readerr™   Ú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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__†  s   z8test_chunksize_is_incremental.<locals>.MyReader.__init__c                 W   s   |  j d7  _ | jj|Ž S ©Nr	   )r£   r¤   rx   )r¥   Úargsr   r   r   rx   Š  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§   rx   r   r«   r   r   r   r   ÚMyReader…  s    
r¯   Téd   r   r	   é
   )Úlenrf   r   r£   )r•   r¯   rV   r   r   r   Útest_chunksize_is_incremental{  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Úcol2úPmode='a' \(append\) is only supported when lines is True and orient is 'records'rY   )Úmoder   ©r   r    r8   rC   r   )r´   r   r\   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º   rY   Fr   ©r»   r   r   r¼   )r   r\   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.rY   Fr   r¾   r¼   )rÀ   r   r\   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Å   rj   Tr   r   r¾   r$   )r   r)   rk   r   r   r*   )Údf1Údf2r,   rl   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¡�'}| j|dddd� |j|dddd� t|dd�}t ||¡ W d   ƒ d S 1 sWw   Y  d S )Nr	   r
   r%   r&   r·   Úer�   ú!ú#©r¹   Úcol3)r	   r
   NN)r%   r&   rÉ   r�   )r¸   r¹   rÍ   rj   Tr   r¾   r$   )r   ÚnpÚnanr)   rk   r   r   r*   )rÆ   Údf3r,   rl   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¡�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 s”w   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Ò   Úfloatrj   r   r¾   r$   ©	r   rÎ   rÏ   Úastyper)   rk   r   r   r*   ©rÆ   rÇ   rÐ   Údf4r,   rl   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¡�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 s”w   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Ó   rj   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    ÚpandasrS   r   r   Úpandas._testingÚ_testingr)   Úpandas.io.json._jsonr   rA   ÚfilterwarningsÚ
pytestmarkÚfixturer   r#   r-   r5   rE   rH   rJ   rO   ÚparametrizerX   r^   rd   ri   rm   r|   r~   r„   rŽ   r–   r—   r˜   r¡   r³   r½   r¿   rÃ   rÈ   rÑ   rØ   rÙ   r   r   r   r   Ú<module>   sf    ÿ



	



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