
    A>iH                        S SK Jr  S SKJrJr  S SKJr  S SKrS SK	r	S SK
rS SK
JrJr  S SKJr  S SKJr  \	R&                  R)                  S5      r\	R,                  S 5       r\	R,                  " S	S
/S9S 5       rS rS rS rS rS rS r\	R&                  R?                  SSS/5      \	R&                  R?                  S\\/5      S 5       5       r S r!S r"S r#S r$\	R&                  R?                  SSS/5      S 5       r%\	R&                  R?                  S/ SQ5      S 5       r&\	R&                  R?                  S/ SQ5      S  5       r'S! r(\	R&                  R?                  S"SS#/5      S$ 5       r)\	R&                  R?                  S%S&S'/5      S( 5       r*S) r+S* r,S+ r-\	R&                  R?                  S,/ S-Q5      S. 5       r.S/ r/\	R&                  R?                  S0S1S2/5      S3 5       r0S4 r1S5 r2S6 r3S7 r4g)8    )Iterator)BytesIOStringIO)PathN)	DataFrame	read_json)
JsonReaderz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                  F    [        / SQ/ SQS.5      n U R                  SSS9$ )N                  ABTrecordslinesorient)r   to_json)dfs    b/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/io/json/test_readlines.pylines_json_dfr      s$    	3	4B::D:33    ujsonpyarrow)paramsc                 f    U R                   S:X  a  [        R                  " S5        U R                   $ )Nr    zpyarrow.json)parampytestimportorskip)requests    r   enginer'      s&    }}	!N+==r   c                  z    [        [        S5      SS9n [        SS/SS//SS/S9n[        R                  " X5        g )	Nz!{"a": 1, "b": 2}
{"b":2, "a" :1}
Tr   r   r   abcolumns)r   r   r   tmassert_frame_equal)resultexpecteds     r   test_read_jsonlr2   &   s?    x EFdSF1a&1a&)C:>H&+r   c                 |    [        U " SSSS5      SUS9n[        / SQ/ SQS	.5      n[        R                  " X#5        g )
Niojsondataline_delimited.jsonTr   r'   )r   r   r   )r   r   r   r*   r+   )r   r   r.   r/   )datapathr'   r0   r1   s       r   test_read_jsonl_engine_pyarrowr;   -   s@    vv'<=F
 yy9:H&+r   c                 h   US:X  a3  SnU R                  [        R                  R                  U[        S95        [        SS/SS/S4// S	QS
9nUR                  SSS9nUS:X  a  [        [        U5      US9nO[        [        U5      US9n[        / SQ/ SQ// S	QS
9n[        R                  " XV5        g )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   r@   rB   )r   rA   rB   )applymarkerr$   markxfail
ValueErrorr   r   r   r   r.   r/   )r&   r'   r>   r   	json_liner0   r1   s          r   test_read_datetimerL   7   s    XFKK--VJ-OP	a&<!<=x	HI,
B 

i
8I8I.v>8I.v>	$&PQ,H &+r   c                      Sn [        U 5      n [        U SS9n[        SS/SS//SS/S	9n[        R                  " X5        Sn [        [        U 5      SS9n[        SS/SS//SS/S	9n[        R                  " X5        g )
Nu5   {"a": "foo”", "b": "bar"}
{"a": "foo", "b": "bar"}
Tr)   u   foo”barfoor*   r+   r,   )r   r   r   r.   r/   )r5   r0   r1   s      r   test_read_jsonl_unicode_charsrP   O   s    
 EDD>Dt4(F;.?#sTH&+ EDx~T2F;.?#sTH&+r   c                     [        SS/SS//SS/S9n U R                  SSS9nS	nX:X  d   e[        S
S/SS//SS/S9n U R                  SSS9nSnX:X  d   e[        R                  " [	        [        U5      SS9U 5        [        SS/SS//SS/S9n U R                  SSS9nSnX:X  d   e[        R                  " [	        [        U5      SS9U 5        g )Nr   r   r*   r+   r,   r   Tr   r   z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}rN   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   r0   r1   s      r   test_to_jsonlrS   a   s    	QFQF#c3Z	8BZZyZ5F/H	VUOfe_5Sz	JBZZyZ5FCH)HV$4DA2F 
We$vuo6	MBZZyZ5FNH)HV$4DA2Fr   c                  x    [        SS/SS//SS/S9n U R                  SSS9R                  S	5      nSnX:X  d   eg )
Nr   r   r*   r+   r,   r   TrR   
)r   r   count)r   actual_new_lines_countexpected_new_lines_counts      r   test_to_jsonl_count_new_linesrY   v   sO    	QFQF#c3Z	8BZZyZEKKDQ !===r   	chunksizer   g      ?bufferc                    U[         :X  a  UR                  5       nUS:X  a3  SnU R                  [        R                  R                  U[        S95        [        U" U5      SS9nU" U5       n[        USX$S9 n[        R                  " U5      n	S S S 5        S S S 5        [        R                  " W	U5        g ! , (       d  f       N.= f! , (       d  f       N7= f)Nr    mPyarrow only supports a file path as an input and line delimited jsonand doesn't support chunksize parameter.r=   Tr)   r   rZ   r'   )r   encoderG   r$   rH   rI   rJ   r   pdconcatr.   r/   )
r&   r   rZ   r[   r'   r>   	unchunkedbufreaderchunkeds
             r   test_readjson_chunksrf   ~   s     %,,.7 	 	FKK--VJ-OP&/t<I}#TYF&))F# 	G 	
 '9-	 	GF 	s$   ,C8B7C7
C	C
Cc                     Sn[         R                  " [        US9   [        [	        U 5      SSUS9 n S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz*chunksize can only be passed if lines=TruematchFr   r^   r$   r?   rJ   r   r   )r   r'   msg_s       r   &test_readjson_chunksize_requires_linesrm      sR    
6C	z	-]#5Af

 
.	-
 
 
.	-s!   AAA
A	A
A$c                    US:X  a.  SnU R                  [        R                  R                  US95        [        R
                  " SSS.5      n[        UR                  SSS	95      n[        USS
US9n[        UR                  SSS	95      n[        USS
SUS9 n[        R                  " U5      nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)Nr    r]   )r>   r   r   r   Tr   r   series)r   typr'   )r   rp   rZ   r'   )rG   r$   rH   rI   r`   Seriesr   r   r   ra   r.   assert_series_equal)r&   r'   r>   sstriorb   rd   re   s           r   test_readjson_chunks_seriesru      s    7 	 	FKK--V-<= 			"#AQYYT)Y<=E%t&IIQYYT)Y<=E	Tx1V
	))F#

 7I.
 
s   C
Cc                 >   US:X  a3  SnU R                  [        R                  R                  U[        S95        [        [        U5      SSUS9 n[        U5      nS S S 5        WS   R                  S:X  d   eUS	   R                  S
:X  d   eg ! , (       d  f       N9= f)Nr    r]   r=   Tr   r^   r   r   r   r   )r   r   )	rG   r$   rH   rI   rJ   r   r   listshape)r&   r   r'   r>   rd   chunkss         r   test_readjson_each_chunkr{      s    7 	 	FKK--VJ-OP 
tq
	f
 !9??f$$$!9??f$$$
 
s   B
Bc                 x   US:X  a3  SnU R                  [        R                  R                  U[        S95        [        / SQ/ SQS.5      nUR                  USSS	9  [        USS
US9 n[        R                  " U5      nS S S 5        [        USUS9n[        R                  " UW5        g ! , (       d  f       N1= f)Nr    r]   r=   r   r   r   Tr   r   r   r^   r8   )rG   r$   rH   rI   rJ   r   r   r   r`   ra   r.   r/   )r&   r'   	temp_filer>   r   rd   re   rb   s           r   test_readjson_chunks_from_filer~      s    7 	 	FKK--VJ-OP	3	4BJJyYJ7	9DAf	E))F# 
F)4?I)W- 
F	Es   )B++
B9c                 ,   [        / SQ/ SQS.5      nUR                  USSS9  [        US SSSSSSS S SU S S S	9nU   UR                  5         S S S 5        UR                  R
                  R                  (       d
   S
U  35       eg ! , (       d  f       N>= f)Nr   r   r   Tr   r   frameF)r   rp   dtypeconvert_axesconvert_dateskeep_default_datesprecise_float	date_unitencodingr   rZ   compressionnrowsz%didn't close stream with chunksize = )r   r   r	   readhandleshandleclosed)rZ   r}   r   rd   s       r   test_readjson_chunks_closesr      s    	3	4BJJyYJ7F  
 
>>  '' 
/	{;' 
s   B
B)r   g@rO   c                     Sn[         R                  " [        US9   [        [	        U 5      SXS9 n S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz"'chunksize' must be an integer >=1rh   Tr^   rj   )r   rZ   r'   rk   rl   s        r   test_readjson_invalid_chunksizer      sP    
/C	z	-]#49

 
.	-
 
 
.	-s!   AAA
A	A
A#)Nr   r   c                     Sn[        / SQ/ SQS.5      n[        [        U5      SU S9nU b!  U   [        R                  " U5      nS S S 5        [
        R                  " X#SU  3S9  g ! , (       d  f       N'= f)	NzF

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



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







    {"A":3,"B":6}
    r   r   r   Tr   rZ   zchunksize: )obj)r   r   r   r`   ra   r.   r/   )rZ   jorigtests       r   )test_readjson_chunks_multiple_empty_linesr     sf    	A  9956DXa[	BD99T?D $K	{*CD Ts   A&&
A4c                 b   US:X  a3  SnU R                  [        R                  R                  U[        S95        UR                  SS 5        [        USSS9 nUR                  S	5        S S S 5        [        X2S
9n[        SS/05      n[        R                  " Xg5        g ! , (       d  f       N<= f)Nr    r]   r=   zlocale.getpreferredencodingc                     g)Ncp949 )do_setlocales    r   <lambda>'test_readjson_unicode.<locals>.<lambda>)  s    Gr   wzutf-8)r   u6   {"£©µÀÆÖÞßéöÿ":["АБВГДабвгд가"]}rF   u   £©µÀÆÖÞßéöÿu   АБВГДабвгд가)rG   r$   rH   rI   rJ   setattropenwriter   r   r.   r/   )r&   monkeypatchr'   r}   r>   fr0   r1   s           r   test_readjson_unicoder      s    7 	 	FKK--VJ-OP57ST	iw	/1	HI 
0 y0F25N4OPQH&+ 
0	/s   B  
B.r   r   c                     Sn[        [        U5      SU S9n[        / SQ/ SQS.5      R                  S U  n[        R
                  " X45        g )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      r9   )r   r   r   ilocr.   r/   )r   r'   jsonlr0   r1   s        r   test_readjson_nrowsr   2  sG    E xd%@F|,?@EEfuMH&+r   znrows,chunksizerw   )r   r   c                    US:X  a3  SnU R                  [        R                  R                  U[        S95        SnUS:w  a5  [        [        U5      SXUS9 n[        R                  " U5      nS S S 5        O+[        USXUS9 n[        R                  " U5      nS S S 5        [        / SQ/ SQS	.5      R                  S U n[        R                  " WU5        g ! , (       d  f       NE= f! , (       d  f       NV= f)
Nr    r]   r=   r   T)r   r   rZ   r'   r   r   r9   )rG   r$   rH   rI   rJ   r   r   r`   ra   r   r   r.   r/   )	r&   r   rZ   r'   r>   r   rd   re   r1   s	            r   test_readjson_nrows_chunksr   ?  s     7 	 	FKK--VJ-OPE
 UO4uRX
ii'G
 

 U
ii'G
 |,?@EEfuMH'8,
 


 
s   CC*
C'*
C8c                     SnSn[         R                  " [        US9   [        USSU S9  S S S 5        g ! , (       d  f       g = f)Nr   z&nrows can only be passed if lines=Truerh   Fr   )r   r   r'   )r$   r?   rJ   r   )r'   r   rk   s      r   "test_readjson_nrows_requires_linesr   ^  s8    E 3C	z	-%uAf= 
.	-	-s	   4
Ac                    US:X  a3  SnU R                  [        R                  R                  U[        S95        [        SS//SS/S/S	9[        S
S//SS/S/S	9[        SS//SS/S/S	9/nU" SSSS5      n[        U5      R                  5       n[        USSUS9 n[        U5       H  u  p[        R                  " XU   5        M      S S S 5        g ! , (       d  f       g = f)Nr    r]   r=   r   r   r*   r+   r   )r-   indexr   r   r   r   r4   r5   r6   r7   Tr^   )rG   r$   rH   rI   rJ   r   r   as_urir   	enumerater.   r/   )
r&   r:   r'   r>   df_list_expectedos_pathfile_url
url_readerr   chucks
             r   "test_readjson_lines_chunks_fileurlr   j  s     7 	 	FKK--VJ-OP 	Aq6(S#Jqc:Aq6(S#Jqc:Aq6(S#Jqc:
 tVV-BCGG}##%H	841V	D
%j1LE!!%%)@A 2 
E	D	Ds   .C
C!c            
          SS-  n  " S S5      nU" U 5      n[        [        [        USSS95      5      S:  d   eUR                  S	:  d   eg )
Nz\{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}
i  c                   2    \ rS rSrSS jrS rS\4S jrSrg)	/test_chunksize_is_incremental.<locals>.MyReaderi  returnNc                 2    SU l         [        U5      U l        g )Nr   )
read_countr   stringio)selfcontentss     r   __init__8test_chunksize_is_incremental.<locals>.MyReader.__init__  s    DO$X.DMr   c                 ^    U =R                   S-  sl         U R                  R                  " U6 $ Nr   )r   r   r   )r   argss     r   r   4test_chunksize_is_incremental.<locals>.MyReader.read  s%    OOq O==%%t,,r   c                 V    U =R                   S-  sl         [        U R                  5      $ r   )r   iterr   )r   s    r   __iter__8test_chunksize_is_incremental.<locals>.MyReader.__iter__  s    OOq O&&r   )r   r   )r   N)	__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes__r   r   r   MyReaderr     s    	/	-	'h 	'r   r   Td   r   r   
   )lenrx   r   r   )r   r   rd   s      r   test_chunksize_is_incrementalr     s`    	 		 
' ' e_FtIfDC@ABQFFFr!!!r   orient_)splitr   tablec                     [        SS/SS/S.5      nSn[        R                  " [        US9   UR	                  SU S9  S S S 5        g ! , (       d  f       g = f)	Nr   r   r*   r+   col1col2Pmode='a' \(append\) is only supported when lines is True and orient is 'records'rh   )moder   r   r$   r?   rJ   r   )r   r   rk   s      r   test_to_json_append_orientr     sQ     
QFS#J7	8B	0  
z	-


G
, 
.	-	-s   A
Ac                      [        SS/SS/S.5      n Sn[        R                  " [        US9   U R	                  SSS	S
9  S S S 5        g ! , (       d  f       g = f)Nr   r   r*   r+   r   r   rh   Fr   r   r   r   r   )r   rk   s     r   test_to_json_append_linesr     sS     
QFS#J7	8B	0  
z	-


5
; 
.	-	-s   A		
Amode_rxc                     [        SS/SS/S.5      nSU  S3n[        R                  " [        US9   UR	                  U S	S
S9  S S S 5        g ! , (       d  f       g = f)Nr   r   r*   r+   r   zmode=z@ is not a valid option.Only 'w' and 'a' are currently supported.rh   Fr   r   r   )r   r   rk   s      r   test_to_json_append_moder     s[     
QFS#J7	8B
wVW  
z	-


U9
= 
.	-	-s   A
Ac                     [        SS/SS/S.5      n[        SS/SS	/S.5      n[        / S
Q/ SQS.5      nUR                  U SSS9  UR                  U SSSS9  [        U SS9n[        R                  " XC5        g )Nr   r   r*   r+   r   r   r   cd)r   r   r   r   )r*   r+   r   r   Tr   r   r   r)   )r   r   r   r.   r/   )r}   df1df2r1   r0   s        r   -test_to_json_append_output_consistent_columnsr     s     aVc3Z8
9C
aVc3Z8
9C,8LMNHKK	iK8KK	4	KB y-F&+r   c                 :   [        SS/SS/S.5      n[        SS/SS	/S
.5      n[        / SQ/ SQ[        R                  [        R                  SS	/S.5      nUR                  U SSSS9  UR                  U SSSS9  [	        U SS9n[
        R                  " XC5        g )Nr   r   r*   r+   r   er   !#r   col3)r   r   NN)r*   r+   r   r   )r   r   r   Tr   r   r)   )r   npnanr   r   r.   r/   )r}   r   df3r1   r0   s        r   /test_to_json_append_output_inconsistent_columnsr     s     aVc3Z8
9C
c3Z#s<
=C&(VVRVVS#.	
H KK	4	KBKK	4	KB y-F&+r   c                    [        SS/SS/S.5      n[        SS/SS	/S.5      n[        S
S/SS/S.5      n[        SSS/05      n[        / SQSSSS	S
S[        R                  [        R                  /[        R                  [        R                  [        R                  [        R                  SS[        R                  [        R                  // SQS.5      R                  SS05      nUR	                  U SSSS9  UR	                  U SSSS9  UR	                  U SSSS9  UR	                  U SSSS9  [        U SS9n[        R                  " Xe5        g )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   floatr   r   r)   r   r   r   astyper   r   r.   r/   r}   r   r   r   df4r1   r0   s          r   ,test_to_json_append_output_different_columnsr    s;    aVc3Z8
9C
aVc3Z8
9C
c3Z#s<
=C
VdE]+
,C8#sCc266266BVVRVVRVVRVVS#rvvrvvNE		
 ffg  KK	4	KBKK	4	KBKK	4	KBKK	4	KB y-F&+r   c                    [        SS/SS/S.5      n[        SS/SS	/S.5      n[        S
S/SS/S.5      n[        SSS/05      n[        / SQ[        R                  [        R                  S
SSS	SS/[        R                  [        R                  SS[        R                  [        R                  [        R                  [        R                  // SQS.5      R                  SS05      nUR	                  U SSSS9  UR	                  U SSSS9  UR	                  U SSSS9  UR	                  U SSSS9  [        U SS9n[        R                  " Xe5        g )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   r   r   r)   r  r  s          r   6test_to_json_append_output_different_columns_reorderedr    s=    aVc3Z8
9C
aVc3Z8
9C
c3Z#s<
=C
VdE]+
,C EVVRVVS#sCcBVVRVVS#rvvrvvrvvrvvN8		
 ffg  KK	4	KBKK	4	KBKK	4	KBKK	4	KB y-F&+r   )5collections.abcr   r4   r   r   pathlibr   numpyr   r$   pandasr`   r   r   pandas._testing_testingr.   pandas.io.json._jsonr	   rH   filterwarnings
pytestmarkfixturer   r'   r2   r;   rL   rP   rS   rY   parametrizerf   rm   ru   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   <module>r     s;   $      +[[''C

 4 4
 +, -,,,0,$G*> q#h/GX#67. 8 0.6/0%&." tQi0 14 &9: ; l3E 4E2,$ 1a&)	, *	, *VV,<=- >-<	>B."8 $?@	- A	-	< 3*-> .>,",.,8,r   