
    .iH                        d dl mZ d dlmZ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&                  j)                  d      Ze	j,                  d        Z e	j,                  d	d
g      d        Zd Zd Zd Zd Zd Zd Ze	j&                  j?                  dddg      e	j&                  j?                  deeg      d               Z d Z!d Z"d Z#d Z$e	j&                  j?                  dddg      d        Z%e	j&                  j?                  dg d      d        Z&e	j&                  j?                  dg d      d         Z'd! Z(e	j&                  j?                  d"dd#g      d$        Z)e	j&                  j?                  d%d&d'g      d(        Z*d) Z+d* Z,d+ Z-e	j&                  j?                  d,g d-      d.        Z.d/ Z/e	j&                  j?                  d0d1d2g      d3        Z0d4 Z1d5 Z2d6 Z3d7 Z4y)8    )Iterator)BytesIOStringIO)PathN)	DataFrame	read_json)
JsonReaderz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                  L    t        g dg dd      } | j                  dd      S )N                  ABTrecordslinesorient)r   to_json)dfs    a/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/json/test_readlines.pylines_json_dfr      s$    	3	4B::D:33    ujsonpyarrow)paramsc                 b    | j                   dk(  rt        j                  d       | j                   S )Nr    zpyarrow.json)parampytestimportorskip)requests    r   enginer'      s&    }}	!N+==r   c                      t        t        d      d      } t        ddgddggddg      }t        j                  | |       y )	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   &   sA    x EFdSF1a&1a&)C:>H&(+r   c                     t         | dddd      d|      }t        g dg dd	      }t        j                  ||       y )
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;   -   sB    vv'<=F
 yy9:H&(+r   c                    |dk(  r6d}| j                  t        j                  j                  |t                     t        ddgddgdfgg d	
      }|j                  dd      }|dk(  rt        t        |      |      }nt        t        |      |      }t        g dg dgg d	
      }t        j                  ||       y )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                     d} t        |       } t        | d      }t        ddgddggddg	      }t        j                  ||       d} t        t        |       d      }t        ddgddggddg	      }t        j                  ||       y )
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                     t        ddgddggddg      } | j                  dd      }d	}||k(  sJ t        d
dgddggddg      } | j                  dd      }d}||k(  sJ t        j                  t	        t        |      d      |        t        ddgddggddg      } | j                  dd      }d}||k(  sJ t        j                  t	        t        |      d      |        y )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X	VUOfe_5Sz	JBZZyZ5FCHX)HV$4DA2F 
We$vuo6	MBZZyZ5FNHX)HV$4DA2Fr   c                      t        ddgddggddg      } | j                  dd      j                  d	      }d}||k(  sJ y )
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   sR    	QFQF#c3Z	8BZZyZEKKDQ !%====r   	chunksizer   g      ?bufferc                    |t         k(  r|j                         }|dk(  r6d}| j                  t        j                  j                  |t                     t         ||      d      } ||      5 }t        |d||      5 }t        j                  |      }	d d d        d d d        t        j                  	|       y # 1 sw Y   (xY w# 1 sw Y   ,xY w)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}$!$#TYvF$JP))F#	$ $ '9-$ $ $ $s$   0C	 B=C	=C	C		Cc                     d}t        j                  t        |      5  t        t	        |       dd|      5 }	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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      s`    
6C	z	- ]#5Af
 		 	 	 !   AA
A
A	AAc                    |dk(  r1d}| j                  t        j                  j                  |             t	        j
                  ddd      }t        |j                  dd	            }t        |dd
|      }t        |j                  dd	            }t        |dd
d|      5 }t	        j                  |      }d d d        t        j                  |       y # 1 sw Y    xY w)Nr    r]   )r>   r   r   r   Tr   r   series)r   typr'   )r   rq   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_seriesrv      s    7 	 	FKK--V-<= 			"#AQYYT)Y<=E%t&IIQYYT)Y<=E	Tx1V
 $	))F#$
 7I.$ $s   &CC$c                 :   |dk(  r6d}| j                  t        j                  j                  |t                     t        t        |      dd|      5 }t        |      }d d d        d   j                  dk(  sJ |d	   j                  d
k(  sJ y # 1 sw Y   2xY w)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                    |dk(  r6d}| j                  t        j                  j                  |t                     t        g dg dd      }|j                  |dd	       t        |dd
|      5 }t        j                  |      }d d d        t        |d|      }t        j                  |       y # 1 sw Y   .xY w)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#$)4?I)W-$ $s   1B44B=c                 $   t        g dg dd      }|j                  |dd       t        |d ddddddd d d| d d 	      }|5  |j                          d d d        |j                  j
                  j                  s
J d
|         y # 1 sw Y   4xY w)Nr   r   r   Tr   r   frameF)r   rq   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                     d}t        j                  t        |      5  t        t	        |       d||      5 }	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz"'chunksize' must be an integer >=1rh   Tr^   rj   )r   rZ   r'   rk   rl   s        r   test_readjson_invalid_chunksizer      s`    
/C	z	- ]#49V
 		 	 	 rn   )Nr   r   c                     d}t        g dg dd      }t        t        |      d|       }|  |5  t        j                  |      }d d d        t        j                  ||d|         y # 1 sw Y   %xY w)	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     sp    	A  9956DXa[	BD 	#99T?D	#$K	{*CD	# 	#s   A**A3c                 j   |dk(  r6d}| j                  t        j                  j                  |t                     |j                  dd        t        |dd      5 }|j                  d	       d d d        t        ||
      }t        ddgi      }t        j                  ||       y # 1 sw Y   ;xY w)Nr    r]   r=   zlocale.getpreferredencodingc                      y)Ncp949 )do_setlocales    r   <lambda>z'test_readjson_unicode.<locals>.<lambda>)  s    r   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	/ J1	HIJ y0F25N4OPQH&(+J Js   B))B2r   r   c                     d}t        t        |      d|       }t        g dg dd      j                  d |  }t	        j
                  ||       y )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  sI    E xd%@F|,?@EEfuMH&(+r   znrows,chunksizerx   )r   r   c                    |dk(  r6d}| j                  t        j                  j                  |t                     d}|dk7  r8t        t        |      d|||      5 }t        j                  |      }d d d        n.t        |d|||      5 }t        j                  |      }d d d        t        g dg dd	      j                  d | }t        j                  |       y # 1 sw Y   ?xY w# 1 sw Y   KxY w)
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
 UO4u	RX
 	(ii'G	( 	(
 Ui
 	(ii'G	( |,?@EEfuMH'8,	( 	(
	( 	(s   CC+C(+C4c                     d}d}t        j                  t        |      5  t        |dd|        d d d        y # 1 sw Y   y xY w)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   ^  sA    E 3C	z	- >%uAf=> > >s	   9Ac                    |dk(  r6d}| j                  t        j                  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        |      j                         }t        |dd|      5 }t        |      D ]  \  }}	t        j                  |	||            	 d d d        y # 1 sw Y   y xY w)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 B
%j1 	BLE5!!%)9%)@A	BB B Bs   *-C!!C*c            	          ddz  }  G d d      } ||       }t        t        t        |dd                  dkD  sJ |j                  d	kD  sJ y )
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y)/test_chunksize_is_incremental.<locals>.MyReaderreturnNc                 2    d| _         t        |      | _        y )Nr   )
read_countr   stringio)selfcontentss     r   __init__z8test_chunksize_is_incremental.<locals>.MyReader.__init__  s    DO$X.DMr   c                 ^    | xj                   dz  c_          | j                  j                  | S Nr   )r   r   r   )r   argss     r   r   z4test_chunksize_is_incremental.<locals>.MyReader.read  s'    OOq O%4==%%t,,r   c                 V    | xj                   dz  c_         t        | j                        S r   )r   iterr   )r   s    r   __iter__z8test_chunksize_is_incremental.<locals>.MyReader.__iter__  s    OOq O&&r   )r   N)__name__
__module____qualname__r   r   r   r   r   r   r   MyReaderr     s    	/	-	'h 	'r   r   Td   r   r   
   )lenry   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                     t        ddgddgd      }d}t        j                  t        |      5  |j	                  d|        d d d        y # 1 sw Y   y xY w)	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     sZ     
QFS#J7	8B	0  
z	- -


G
,- - -s   AAc                      t        ddgddgd      } d}t        j                  t        |      5  | j	                  ddd	
       d d d        y # 1 sw Y   y xY w)Nr   r   r*   r+   r   r   rh   Fr   r   r   r   r   )r   rk   s     r   test_to_json_append_linesr     s\     
QFS#J7	8B	0  
z	- <


5
;< < <s   AAmode_rxc                     t        ddgddgd      }d|  d}t        j                  t        |      5  |j	                  | d	d
       d d d        y # 1 sw Y   y xY w)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     sd     
QFS#J7	8B
wVW  
z	- >


U9
=> > >s   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      }|j                  | dd       |j                  | ddd       t        | d      }t        j                  ||       y )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                 L   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      }|j                  | ddd       |j                  | ddd       t	        | d      }t        j                  ||       y )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                    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      j                  ddi      }|j	                  | ddd       |j	                  | ddd       |j	                  | ddd       |j	                  | ddd       t        | d      }t        j                  ||       y )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                    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      j                  ddi      }|j	                  | ddd       |j	                  | ddd       |j	                  | ddd       |j	                  | ddd       t        | d      }t        j                  ||       y )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   rv   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   