
    dF                     T   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             Zd Zd	 Zd
 Zd Zd Zd Zej                            dddg          d             Zd Zd Zd Zd Zej                            dddg          d             Zej                            dg d          d             Z ej                            dg d          d             Z!d Z"ej                            dddg          d             Z#ej                            dd d!g          d"             Z$d# Z%d$ Z&d% Z'ej                            d&g d'          d(             Z(d) Z)ej                            d*d+d,g          d-             Z*d. Z+d/ Z,d0 Z-d1 Z.dS )2    )StringIO)Path)IteratorN)	DataFrame	read_json)
JsonReaderc                  \    t          g dg dd          } |                     dd          S )N                  ABTrecordslinesorient)r   to_json)dfs    _/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/io/json/test_readlines.pylines_json_dfr      s5    	33	4	4B::D:333    c                      t          dd          } t          ddgddggddg          }t          j        | |           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expecteds     r   test_read_jsonlr)      sQ    <DIIIF1a&1a&)C:>>>H&(+++++r   c                     t           | dddd          d|          }t          g dg dd	          }t          j        ||           d S )
Niojsondataline_delimited.jsonTr   engine)r   r   r   )r   r   r   r    r!   r$   )datapathr0   r'   r(   s       r   test_read_jsonl_engine_pyarrowr3      sh    vv'<==  F
 yyyyyy99::H&(+++++r   c                 t   |dk    r@d}| j                             t          j                            |t
                               t          ddgddgdfgg d	
          }|                    dd          }t          ||          }t          g dg dgg d	
          }t          j
        ||           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   r0   )r   r9   r;   )r   r:   r;   )node
add_markerpytestmarkxfail
ValueErrorr   r   r   r%   r&   )requestr0   r7   r   	json_liner'   r(   s          r   test_read_datetimerH   (   s    X 1 1
 1 S STTT	a&<!<=x	HI,,,
 
 
B 

i
88Iy000F	$	$	$&P&P&PQ,,,  H &(+++++r   c                  (   d} t          |           } t          | d          }t          ddgddggddg	          }t          j        ||           d} t          | d          }t          ddgddggddg	          }t          j        ||           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(   s      r   test_read_jsonl_unicode_charsrL   <   s    
 EDD>>Dt4(((F;.?#sTTTH&(+++ EDt4(((F;.?#sTTTH&(+++++r   c                     t          ddgddggddg          } |                     dd          }d	}||k    sJ t          d
dgddggddg          } |                     dd          }d}||k    sJ t          j        t	          |d          |            t          ddgddggddg          } |                     dd          }d}||k    sJ t          j        t	          |d          |            d S )Nr   r   r    r!   r"   r   Tr   r   z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}rJ   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(   s      r   test_to_jsonlrO   N   s5   	QFQF#c3Z	8	8	8BZZyZ55F/HX	VUOfe_5Sz	J	J	JBZZyZ55FCHX)F$777<<< 
We$vuo6	M	M	MBZZyZ55FNHX)F$777<<<<<r   c                      t          ddgddggddg          } |                     dd                              d	          }d}||k    sJ d S )
Nr   r   r    r!   r"   r   TrN   
)r   r   count)r   actual_new_lines_countexpected_new_lines_counts      r   test_to_jsonl_count_new_linesrU   c   sg    	QFQF#c3Z	8	8	8BZZyZEEKKDQQ !%=======r   	chunksizer   g      ?c                    |dk    r@d}| j                             t          j                            |t
                               t          t          |          d          }t          t          |          d||          5 }t          j	        |          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr5   mPyarrow only supports a file path as an input and line delimited jsonand doesn't support chunksize parameter.r6   Tr   r   rV   r0   )r@   rA   rB   rC   rD   rE   r   r   pdconcatr%   r&   )rF   r   rV   r0   r7   	unchunkedreaderchunkeds           r   test_readjson_chunksr_   k   s    7 	 	 1 1
 1 S STTT(=11>>>I	ty
 
 
 $	)F##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 '9-----s   B&&B*-B*c                     d}t          j        t          |          5  t          t	          |           dd|          5 }	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz*chunksize can only be passed if lines=TruematchFr   rY   rB   r8   rE   r   r   )r   r0   msg_s       r   &test_readjson_chunksize_requires_linesrf      s    
6C	z	-	-	-  ]##5Af
 
 
 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 4   !A%AA%A	A%A	A%%A),A)c                    |dk    r:d}| j                             t          j                            |                     t          j        ddd          }t          |                    dd	                    }t          |dd
|          }t          |                    dd	                    }t          |dd
d|          5 }t          j
        |          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr5   rX   )r7   r   r   r   Tr   r   Series)r   typr0   )r   rj   rV   r0   )r@   rA   rB   rC   rD   rZ   ri   r   r   r   r[   r%   assert_series_equal)rF   r0   r7   sstrior\   r]   r^   s           r   test_readjson_chunks_seriesrn      sH   7 	 	 1 1 1 @ @AAA 		""##AQYYT)Y<<==E%t&IIIIQYYT)Y<<==E	Tx1V
 
 
 $	)F##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 7I.....s   C((C,/C,c                 l   |dk    r@d}| j                             t          j                            |t
                               t          t          |          dd|          5 }t          |          }d d d            n# 1 swxY w Y   |d         j	        dk    sJ |d	         j	        d
k    sJ d S )Nr5   rX   r6   Tr   rY   r   r   r   r   )r   r   )
r@   rA   rB   rC   rD   rE   r   r   listshape)rF   r   r0   r7   r]   chunkss         r   test_readjson_each_chunkrt      s    7 	 	 1 1
 1 S STTT 
tq
 
 
 	f               !9?f$$$$!9?f$$$$$$s   'BB
Bc                    |dk    r@d}| j                             t          j                            |t
                               t          j        d          5 }t          g dg dd          }|	                    |dd	
           t          |dd|          5 }t          j        |          }d d d            n# 1 swxY w Y   t          |d|          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr5   rX   r6   	test.jsonr
   r   r   Tr   r   r   rY   r/   )r@   rA   rB   rC   rD   rE   r%   ensure_cleanr   r   r   rZ   r[   r&   )rF   r0   r7   pathr   r]   r^   r\   s           r   test_readjson_chunks_from_filery      s   7 	 	 1 1
 1 S STTT		%	% 2YYYYYY7788


4tI
666t41VDDD 	(i''G	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(d$v>>>	
i1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s7   AC=B>2C=>C	C=C	*C==DDc                    t          j        d          5 }t          g dg dd          }|                    |dd           t	          |d dddddd	d d d| d d 
          }|5  |                                 d d d            n# 1 swxY w Y   |j        j        j        sJ d|              	 d d d            d S # 1 swxY w Y   d S )Nrv   r
   r   r   Tr   r   frameF)r   rj   dtypeconvert_axesconvert_dateskeep_default_datesprecise_float	date_unitencodingr   rV   compressionnrowsz%didn't close stream with chunksize = )	r%   rw   r   r   r   readhandleshandleclosed)rV   rx   r   r]   s       r   test_readjson_chunks_closesr      s   		%	% ?YYYYYY7788


4tI
666#
 
 
   	 	KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 N!(	? 	?>9>>	? 	? 	? 	?+? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s6   AB;#B8B;B	B;B	!B;;B?B?)r   g@rK   c                     d}t          j        t          |          5  t          t	          |           d||          5 }	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz"'chunksize' must be an integer >=1ra   TrY   rc   )r   rV   r0   rd   re   s        r   test_readjson_invalid_chunksizer      s    
/C	z	-	-	-  ]##49V
 
 
 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 rg   )Nr   r   c                     d}t          g dg dd          }t          |d|           }| .|5  t          j        |          }d d d            n# 1 swxY w Y   t	          j        ||d|             d S )	NzF

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



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







    {"A":3,"B":6}
    r
   r   r   Tr   rV   zchunksize: )obj)r   r   rZ   r[   r%   r&   )rV   jorigtests       r   )test_readjson_chunks_multiple_empty_linesr      s    	A  9999995566DQdi888D 	# 	#9T??D	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#$*C	*C*CDDDDDDs   AAAc                    |dk    r@d}| j                             t          j                            |t
                               t          j        d          5 }|                    dd            t          |dd	          5 }|
                    d
           d d d            n# 1 swxY w Y   t          ||          }t          ddgi          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr5   rX   r6   rv   zlocale.getpreferredencodingc                     dS )Ncp949 )do_setlocales    r   <lambda>z'test_readjson_unicode.<locals>.<lambda>  s    PW r   wzutf-8)r   u6   {"£©µÀÆÖÞßéöÿ":["АБВГДабвгд가"]}r?   u   £©µÀÆÖÞßéöÿu   АБВГДабвгд가)r@   rA   rB   rC   rD   rE   r%   rw   setattropenwriter   r   r&   )rF   monkeypatchr0   r7   rx   fr'   r(   s           r   test_readjson_unicoder   	  s   7 	 	 1 1
 1 S STTT		%	% 09;W;WXXX$g... 	N!GGLMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 4///69R8STUU
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s6   *C7B'C7'B+	+C7.B+	/;C77C;>C;r   r   c                     d}t          |d|           }t          g dg dd          j        d |          }t          j        ||           d S )N[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}T)r   r   r   r   r      r   r   r      r1   )r   r   ilocr%   r&   )r   r0   jsonlr'   r(   s        r   test_readjson_nrowsr     sa    E uD666F|||,,,??@@EfufMH&(+++++r   znrows,chunksizerp   )r   r   c                    |dk    r@d}| j                             t          j                            |t
                               d}t          |d|||          5 }t          j        |          }d d d            n# 1 swxY w Y   t          g dg dd	          j
        d |         }t          j        ||           d S )
Nr5   rX   r6   r   T)r   r   rV   r0   r   r   r1   )r@   rA   rB   rC   rD   rE   r   rZ   r[   r   r   r%   r&   )	rF   r   rV   r0   r7   r   r]   r^   r(   s	            r   test_readjson_nrows_chunksr   )  s    7 	 	 1 1
 1 S STTTE 
T)F
 
 
 $	)F##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ |||,,,??@@EfufMH'8,,,,,s   A>>BBc                     d}d}t          j        t          |          5  t          |dd|            d d d            d S # 1 swxY w Y   d S )Nr   z&nrows can only be passed if lines=Truera   Fr   )r   r   r0   )rB   r8   rE   r   )r0   r   rd   s      r   "test_readjson_nrows_requires_linesr   A  s    E 3C	z	-	-	- > >%uAf====> > > > > > > > > > > > > > > > > >s   AAAc                 8   |dk    r@d}| j                             t          j                            |t
                               t          ddggddgdg	          t          d
dggddgdg	          t          ddggddgdg	          g} |dddd          }t          |                                          }t          |dd|          5 }t          |          D ] \  }}	t          j        |	||                    !	 d d d            d S # 1 swxY w Y   d S )Nr5   rX   r6   r   r   r    r!   r   )r#   indexr   r   r   r   r+   r,   r-   r.   TrY   )r@   rA   rB   rC   rD   rE   r   r   as_urir   	enumerater%   r&   )
rF   r2   r0   r7   df_list_expectedos_pathfile_url
url_readerr   chucks
             r   "test_readjson_lines_chunks_fileurlr   M  s    7 	 	 1 1
 1 S STTT 	Aq6(S#Jqc:::Aq6(S#Jqc:::Aq6(S#Jqc:::
 htVV-BCCGG}}##%%H	841V	D	D	D B
%j11 	B 	BLE5!%)9%)@AAAA	BB B B B B B B B B B B B B B B B B Bs   1DDDc            	          ddz  }  G d d          } ||           }t          t          t          |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                   (    e Zd ZddZd ZdefdZdS )/test_chunksize_is_incremental.<locals>.MyReaderreturnNc                 <    d| _         t          |          | _        d S )Nr   )
read_countr   stringio)selfcontentss     r   __init__z8test_chunksize_is_incremental.<locals>.MyReader.__init__o  s    DO$X..DMMMr   c                 @    | xj         dz  c_          | j        j        | S Nr   )r   r   r   )r   argss     r   r   z4test_chunksize_is_incremental.<locals>.MyReader.reads  s$    OOq OO%4=%t,,r   c                 J    | xj         dz  c_         t          | j                  S r   )r   iterr   )r   s    r   __iter__z8test_chunksize_is_incremental.<locals>.MyReader.__iter__w  s"    OOq OO&&&r   )r   N)__name__
__module____qualname__r   r   r   r   r   r   r   MyReaderr   n  sR        	/ 	/ 	/ 	/	- 	- 	-	'h 	' 	' 	' 	' 	' 	'r   r   Td   r   r   
   )lenrq   r   r   )r   r   r]   s      r   test_chunksize_is_incrementalr   d  s    	 		 
' ' ' ' ' ' ' ' Xe__FtIfDC@@@AABBQFFFFr!!!!!!r   orient_)splitr   tablec                     t          ddgddgd          }d}t          j        t          |          5  |                    d|            d d d            d S # 1 swxY w Y   d S )	Nr   r   r    r!   col1col2Omode='a' \(append\) is only supported whenlines is True and orient is 'records'ra   )moder   r   rB   r8   rE   r   )r   r   rd   s      r   test_to_json_append_orientr     s     
QFS#J77	8	8B	0  
z	-	-	- - -


G
,,,- - - - - - - - - - - - - - - - - -s   AA Ac                      t          ddgddgd          } d}t          j        t          |          5  |                     ddd	
           d d d            d S # 1 swxY w Y   d S )Nr   r   r    r!   r   r   ra   Fr   r   r   r   r   )r   rd   s     r   test_to_json_append_linesr     s     
QFS#J77	8	8B	0  
z	-	-	- < <


5
;;;< < < < < < < < < < < < < < < < < <s   AA!Amode_rxc                     t          ddgddgd          }d|  d}t          j        t          |          5  |                    | d	d
           d d d            d S # 1 swxY w Y   d S )Nr   r   r    r!   r   zmode=z@ is not a valid option.Only 'w' and 'a' are currently supported.ra   Fr   r   r   )r   r   rd   s      r   test_to_json_append_moder     s     
QFS#J77	8	8B	4 	4 	4 	4  
z	-	-	- > >


U9
===> > > > > > > > > > > > > > > > > >s   AA"%A"c                     t          ddgddgd          } t          ddgdd	gd          }t          g d
g dd          }t          j        d          5 }|                     |dd           |                    |ddd           t	          |d          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r    r!   r   r   r   cd)r   r   r   r   )r    r!   r   r   rv   Tr   r   r   r   r   r%   rw   r   r   r&   )df1df2r(   rx   r'   s        r   -test_to_json_append_output_consistent_columnsr     s(    aVc3Z88
9
9C
aVc3Z88
9
9C,,,8L8L8LMMNNH		%	% 0DY777Ds$yAAA 4t,,,
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AB<<C C c                     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          j        d          5 }|                     |ddd           |                    |ddd           t	          |d          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r    r!   r   er   !#r   col3)r   r   NN)r    r!   r   r   )NNr   r   )r   r   r   rv   Tr   r   r   r   )r   df3r(   rx   r'   s        r   /test_to_json_append_output_inconsistent_columnsr     s@    aVc3Z88
9
9C
c3Z#s<<
=
=C&&&(((***	
 	
 H 
	%	% 0Ds$yAAADs$yAAA 4t,,,
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AC  CCc                     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          j        d          5 }|                     |ddd           |                    |ddd           |                    |ddd           |                    |ddd           t          |d          }t          j        ||           d d d            d S # 1 swxY w 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   floatrv   r   r   r   r   astyper%   rw   r   r   r&   r   r   r   df4r(   rx   r'   s          r   ,test_to_json_append_output_different_columnsr     s    aVc3Z88
9
9C
aVc3Z88
9
9C
c3Z#s<<
=
=C
VdE]+
,
,C888>>>BBBEEE		
 	
  ffg  
	%	% 	0Ds$yAAADs$yAAADs$yAAADs$yAAA 4t,,,
fh///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0   BD33D7:D7c                     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          j        d          5 }|                    |ddd           |                    |ddd           |                    |ddd           |                     |ddd           t          |d          }t          j        ||           d d d            d S # 1 swxY w 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   rv   r   r   r   r   r   s          r   6test_to_json_append_output_different_columns_reorderedr     s    aVc3Z88
9
9C
aVc3Z88
9
9C
c3Z#s<<
=
=C
VdE]+
,
,C EEE>>>BBB888		
 	
  ffg  
	%	% 	0Ds$yAAADs$yAAADs$yAAADs$yAAA 4t,,,
fh///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0r   )/r+   r   pathlibr   typingr   rB   pandasrZ   r   r   pandas._testing_testingr%   pandas.io.json._jsonr   fixturer   r)   r3   rH   rL   rO   rU   rC   parametrizer_   rf   rn   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r     s                                       + + + + + + 4 4 4
, , ,, , ,, , ,(, , ,$= = =*> > > q#h//. . 0/.,  / / /0% % %&2 2 2$ tQi00? ? 10?6 &9&9&9::  ;: lll33E E 43E20 0 0& 1a&))	, 	, *)	, *VV,<==- - >=-.	> 	> 	>B B B." " "8 $?$?$?@@	- 	- A@	-	< 	< 	< 3*--	> 	> .-	>0 0 0$0 0 000 0 0:0 0 0 0 0r   