
    Owg1                    d   d dl Z d dl mZ d dlmZ d dlmZmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ d dlmZ d dlmc mZ d dlZd dlmZmZmZmZmZmZmZmZm Z  d dl!m"Z# d dl$m%Z%m&Z& d d	l'm(Z( d d
l)m*Z* d Z+d Z, G d d      Z-d Z.d Z/d Z0d Z1 ejd                  d      d        Z3d Z4y)    N)	timedelta)Decimal)BytesIOStringIO)using_pyarrow_string_dtype)IS64)	NA	DataFrameDatetimeIndexIndex
RangeIndexSeries	Timestamp
date_range	read_json)ArrowStringArrayStringArray)ArrowStringArrayNumpySemantics)ujson_dumpsc                  p   t        ddgddggddg      } d}d}t        j                  t        |      5  	 t	        |d	
       d d d        t        j                  t        |      5  t	        | j                         d	
       d d d        t        j                  t        |      5  t	        dd
      }t        j                  ||        d d d        t        j                  t        |      5  	 t	        dd	
      }d d d        t        j                  t        |      5  	 t	        dd	
      }t        j                  |        d d d        y # t
        $ r Y w xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t
        $ r Y w xY w# 1 sw Y   xY w# t
        $ r Y zw xY w# 1 sw Y   y xY w)N      abcolumnsz[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}zPassing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.matchFlines!{"a": 1, "b": 2}
{"b":2, "a" :1}
T4{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"}
)r
   tmassert_produces_warningFutureWarningr   
ValueErrorto_jsonassert_frame_equal)expectedjsonlmsgresults       W/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/json/test_pandas.pytest_literal_json_deprecationr.   +   s   1a&1a&)C:>HE	:  
	#	#M	= 	e5) 
	#	#M	= 3(""$E23 
	#	#M	= 0@M
fh/0 
	#	#M	= 	OF 
	#	#M	= 0	DERF 	fh/0 0'  		 3 30 0  		   		0 0s   EE'E*&$E6-F/FF,!F.F,	EEEEE'*E36E?	FFFFF	F)&F,(F))F,,F5c                     |dv r|j                  d      }|dk(  r#t        t        |j                              |_        t	        j
                  | |       y )N)recordsvaluesTdropr1   )reset_indexrangelenr   r#   r(   )r,   r)   orients      r-   assert_json_roundtrip_equalr8   X   sN    &&''T'2 X%5%5!67&(+    c                      e Zd Zej                  d        Zej                  d        Zej                  d        Zd Zej                  j                  dg d      d        Zej                  j                  ddd	g      d
        Zej                  j                  dddg      ej                  j                  dddgddggddgddggddgddgg ed      dg ed      dggg      d               Zej                  j                  dg d      d        Zd Zej                  j                  ddeg      ej                  j                  d d!dg      d"               Zej                  j                  ddej(                  g      ej                  j                  d d!dg      d#               Zej                  j                  dd$ej,                  ed%g      ej                  j                  d d!dg      d&               Zej                  j                  d d!dg      d'        Zej                  j                  d d!dg      d(        Zej                  j                  d d!dg      d)        Zej                  j                  d d!dg      d*        Zej                  j;                  d+e,      ej                  j                  d	d-d-gd.d/ggd-d0gd.d.ggd-d-gd.d.ggg      d1               Zej                  j                  d2d3d4d5jA                  d6g      dfd7d8g      d9        Z!ej                  j                  dd!dg      ej                  j                  d d!dg      d:               Z"ej                  j                  dd!dg      d;        Z#ej                  j                  d<ejH                  ejH                   g      ej                  j                  dd!dg      d=               Z%ej                  jM                  e' d>?      ej                  j                  d@g dA      dB               Z(dC Z)dD Z*dE Z+dF Z,dG Z-dH Z.dI Z/dJ Z0dK Z1dL Z2dM Z3dN Z4ej                  j                  ddd$g      dO        Z5dP Z6dQ Z7ej                  j                  dej,                  eg      dR        Z8dS Z9dT Z:dU Z;ej                  j                  dVd! e<dWgdXY      fd e<dZg      fg      d[        Z=d\ Z>d] Z?d^ Z@d_ ZAd` ZBda ZCej                  j                  dbdcddg      ej                  j                  ded!dg      ej                  j                  dfeDj                  eDj                  eg      dg                      ZFej                  j                  dhg di      dj        ZGej                  j                  dkg dl      dm        ZHdn ZIej                  j                  dkg dl      do        ZJdp ZKej                  j                  dqg dr      ds        ZLej                  j                  dqg dt      du        ZMdv ZNdw ZOdx ZPej                  j                  ej                  j                  ej                  j                  dydz eSj                  d{|      gd}dXgd~ eSj                  d{|      gg      d                      ZUd ZVd ZWd ZXej                  j                  ded!dg      ej                  j                  dbdddcg      ej                  j                  deSj                  eZg      d                      Z[ej                  j                  ded!dg      ej                  j                  deSj                  eZg      d               Z\d Z]d Z^d Z_d Z`d Zad Zbd Zcej                  j                  d ed       edd|       ed      g      d        Zdd Zeej                  j                  d efdd       efddd       efdd      g      d        Zgd Zhd Ziej                  j                  ejj                  d               Zld Zmd Znej                  j                  deoj                  dz   eoj                  dz    g      d        Zqej                  j                  dddg      d        Zrd Zsd Ztej                  j;                  deu,      ej                  j                  dg dg dg dg dg dg dg dej                  dddgdej                  dddgg	      ej                  j                  ddewg      d                      Zxd Zyej                  j                  dd$ddgddgddgddgddgg      ej                  j                  d	ddgddgddgg      d               Zzd Z{ej                  j;                   e|       d?      ej                  j                  dg d      d               Z}ej                  j                  dd!eedÜg      dĄ        Z~ej                  j                  dg dŢ      dƄ        ZdǄ Zej                  j                  d eddgddggddg˫      ddgddgddggd̜f eddgddggddg˫      j                  dͫ      ddgddgddggd̜f eddgddggddgddgddggΫ      ddgddgddggd̜f e<g dϢdЬѫ      dg dϢdҜf e<g dϢdЬѫ      j                  dͫ      dg dϢdҜf e<ddgdddgddggӫ      dddgdҜfg      dԄ        Zej                  j                  d eddgddggddg˫       eddgddggddg˫      j                  dͫ       eddgddggddgddgddggΫ       e<g dϢdЬѫ       e<g dϢdЬѫ      j                  dͫ       e<ddgdddgddggӫ      g      dՄ        Zej                  j                  ddd	g      dք        Zej                  j                  dddg      d؄        Zej                  j                  dddg      ej                  j                  dd!dg      dڄ               Zdۄ Zej                  j                  dg dݢ      dބ        Zej                  j                  dg d      d        Zej                  j                  dddg      d        Zej                  j                  ddd ej                  ddej                  j;                  d?             ej                  ddej                  j;                  d?            g      d        Zej                  j                  dg d      d        Zej                  jM                   e|       d?      ej                  j                  dg d      d               Zd Zd Zd Zej                  j                  d eg dϢg dd      dfg      d        Zej                  j                  d        Zd Zd Zd Zd Zej                  j                  d  e<dddd      df e<dddd      d	f ed
dgddgg      df eddgddgg      dfg      d        Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zd Zy$(  TestPandasContainerc                    t        t        d            D ci c]4  \  }}|t        j                  j	                  |      j                  d      6 }}}dgdz  dgdz  z   dgdz  z   dgdz  z   }t        t        |            |d	<   t        j                  dd
      |d<   t        |t        j                  |d	            S c c}}w )NABCD   bah   barbazfoo   Eint64dtypesortnameindex)	enumeratelistnprandomdefault_rngstandard_normalreversedaranger
   pdCategoricalIndex)selficdatacats        r-   categorical_framez%TestPandasContainer.categorical_framea   s     "$v,/
1 ryy$$Q'77;;
 
 gkUGaK'5'A+5"D#'S	yy73VR%8%83%GHH
s   9Cc                     t        dt        j                  dt        j                        z  t	        dd      d      }|j
                  j                  d       |_        |S )Ng?
   rG   
2020-01-01periodsts)rM   rK   )r   rP   rU   float64r   rM   
_with_freq)rX   sers     r-   datetime_seriesz#TestPandasContainer.datetime_seriesl   sO     "))Bbjj11\26

 II((.	
r9   c           	         t        t        j                  j                  d      j	                  d      t        t        d      t              t        ddd      	      }|j                  j                  d       |_	        |S )
Nr   )r>      r=   rG   
2000-01-01r>   Brb   freqr   rM   )r
   rP   rQ   rR   rS   r   rO   objectr   rM   re   )rX   dfs     r-   datetime_framez"TestPandasContainer.datetime_framex   sb     II!!!$44W=$v,f5\2C@

 88&&t,	r9   c                     t        ddgddggddgddg	      }t        |j                  |
            }t        ||
      }|j	                         }t        |||       y )Nr   r   rZ   dz	index " 1z	index / 2za \ bzy / zrM   r   r7   r
   r   r'   r   copyr8   rX   r7   rp   r[   r,   r)   s         r-    test_frame_double_encoded_labelsz4TestPandasContainer.test_frame_double_encoded_labels   sf    3Z#s$,w'
 

&
124/779#FHf=r9   r7   )splitr0   r1   c                     t        ddgddggddgddg      }t        |j                  |	            }t        ||	      }|j	                         }t        |||       y )
Nr   r   rZ   rs   r   xyrt   ru   rv   rx   s         r-   test_frame_non_unique_indexz/TestPandasContainer.test_frame_non_unique_index   s]    c
S#J/1vSzR

&
124/779#FHf=r9   rM   r   c                     t        ddgddggddgddg      }d	| d
}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)Nr   r   rZ   rs   r   r|   r}   rt   z+DataFrame index must be unique for orient=''r   ru   r
   pytestraisesr&   r'   rX   r7   rp   r+   s       r-   "test_frame_non_unique_index_raisesz6TestPandasContainer.test_frame_non_unique_index_raises   sd    c
S#J/1vSzR;F81E]]:S1 	&JJfJ%	& 	& 	&   AArz   r1   r[   r   r   rZ   rs         ?      @g      @g      @r      2013010120130102c                    t        |ddgddg      }t        t        |j                  |            |dg      }|dk(  rot        |      }|j                  d d df   j
                  d	k(  rT|j                  d|j                  d d df   j                  t        j                        d
z         n|dk(  r|}ddg|_
        t        j                  |       y )Nr   r   r|   rt   ru   )r7   convert_datesr1   r   datetime64[ns]@B rz   zx.1)r
   r   r   r'   ilocrH   isetitemastyperP   rF   r   r#   r(   )rX   r7   r[   rp   r,   r)   s         r-   test_frame_non_unique_columnsz1TestPandasContainer.test_frame_non_unique_columns   s     tAq6C:>RZZvZ./se
 X H}}QT"((,<<
 !!!X]]1a4%8%?%?%IW%TUwH #U|H
fh/r9   )rM   r   r0   c                     t        ddgddggddgddg      }d	| d
}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)Nr   r   rZ   rs   r   r   r|   rt   z-DataFrame columns must be unique for orient='r   r   ru   r   r   s       r-   $test_frame_non_unique_columns_raisesz8TestPandasContainer.test_frame_non_unique_columns_raises   sd    c
S#J/1vSzR=fXQG]]:S1 	&JJfJ%	& 	& 	&r   c                 N    |j                         |j                  d      k(  sJ y )Nr   ru   r'   )rX   float_frames     r-   test_frame_default_orientz-TestPandasContainer.test_frame_default_orient   s'    ""$(;(;9(;(MMMMr9   rH   Fconvert_axesTc                 v    t        |j                  |            }t        ||||      }|}t        |||       y Nru   r7   r   rH   r   r'   r   r8   )rX   r7   r   rH   r   r[   r,   r)   s           r-   test_roundtrip_simplez)TestPandasContainer.test_roundtrip_simple   s>     ++6+:;4\QVW#FHf=r9   c                 v    t        |j                  |            }t        ||||      }|}t        |||       y r   r   )rX   r7   r   rH   	int_framer[   r,   r)   s           r-   test_roundtrip_intframez+TestPandasContainer.test_roundtrip_intframe   s>     	)))894\QVW#FHf=r9   NU3c           
      H   t        t        j                  d      t        d      D cg c]  }t	        |       c}t        d      D cg c]  }t	        |       c}|      }t        |j                  |            }t        ||||      }|j                         }|s|j                  t        j                        }|ra|dv r]|j                  j                  t        j                        |_        |j                  j                  t        j                        |_        nk|dk(  r1|r/|j                  j                  t        j                        |_        n5|r3|d	k(  r.|j                  j                  t        j                        |_        t        |||       y c c}w c c}w )
N)   ri   ri   r   )r   rM   rH   ru   r   rt   r0   rz   )r
   rP   zerosr5   strr   r'   r   rw   r   rF   r   rM   r8   )	rX   r7   r   rH   rY   rp   r[   r,   r)   s	            r-   test_roundtrip_str_axesz+TestPandasContainer.test_roundtrip_str_axes   s7    HHX%*1X.SV.#(:.a3q6.	
 

&
124\QVW779rxx0H V';;'//66rxx@H%^^22288<HNy \'//66rxx@Hf/'//66rxx@H#FHf=3 /.s   F
Fc                 p   |dv r3|j                  t        j                  j                  d| d             t	        |j                  |            }t        |||      }|j                         }|j                  j                  |st        nd      |_        d |j                  _        t        |||       y )Nrt   z.Can't have duplicate index values for orient 'z')reasonru   r7   r   string[pyarrow_numpy])applymarkerr   markxfailr   r'   r   rw   rM   r   r   rK   r8   )	rX   requestr7   r]   r   using_infer_stringr[   r,   r)   s	            r-   test_roundtrip_categoricalz.TestPandasContainer.test_roundtrip_categorical   s    
 ))!!KF8SUV "  )111@A4\J$))+!..)C/F
 ##FHf=r9   c                 ,   t               }t        |j                  |            }t        |||      }|dk(  r't	        g |rt
        nt              }t        ||      }n|dv rt               }n|j                         }t        j                  ||       y )Nru   r   rz   rG   rt   )
r
   r   r'   r   r   floatro   rw   r#   r(   )rX   r7   r   empty_framer[   r,   idxr)   s           r-   test_roundtrip_emptyz(TestPandasContainer.test_roundtrip_empty  s    k++6+:;4\JWL5fFC sC8H++ {H"'')H
fh/r9   c                 .   t        |j                  |            }t        |||      }|j                         }|sM|j                  j                  t        j                        dz  }|dk7  r|j                  t              }||_        t        |||       y )Nru   r   r   rz   )r   r'   r   rw   rM   viewrP   rF   r   r   r8   )rX   r7   r   rq   r[   r,   r)   r   s           r-   test_roundtrip_timestampz,TestPandasContainer.test_roundtrip_timestamp   s     ..f.=>4\J!&&(..%%bhh/7:C jjo HN#FHf=r9   c                 ^   t        g d      }g dg dg dg dd}t        ||      }t        |j                  |            }t	        |||	      }|j                         } |j                  di |j                  d
      j                  t        j                        }t        |||       y )N)r   r   rZ   rs   e)              ?       @      @      @)r   r   r   r   r   )foo1foo2foo3foo4foo5)TFTFTArk   CD)r[   rM   ru   r   number )r   r
   r   r'   r   rw   assignselect_dtypesr   rP   rF   r8   )	rX   r7   r   rM   r1   rp   r[   r,   r)   s	            r-   test_roundtrip_mixedz(TestPandasContainer.test_roundtrip_mixed1  s    /0**91	
 F%0

&
124\J779"8??WX%;%;H%E%L%LRXX%VW#FHf=r9   z9#50456 Column multiindex is stored and loaded differently)r   r   2022JANFEB2023c                     t        ddgddggt        j                  j                  |            }t	        |j                  d            }t        |d      }t        j                  ||       y )Nr   r   r   ri   r   rz   ru   )	r
   rV   
MultiIndexfrom_arraysr   r'   r   r#   r(   )rX   r   rp   r[   r,   s        r-   test_roundtrip_multiindexz-TestPandasContainer.test_roundtrip_multiindexE  sc     VaVMM--g6
 

'
2340
fb)r9   zdata,msg,orient)z{"key":b:a:d}zExpected object or valuer   zO{"columns":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}|z;Length of values \(3\) does not match length of index \(2\))zW{"columns":["A","B","C"],"index":["1","2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}z+3 columns passed, passed data had 2 columnsrz   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrz   c                     t        j                  t        |      5  t        t	        |      |       d d d        y # 1 sw Y   y xY w)Nr   ru   )r   r   r&   r   r   )rX   r[   r+   r7   s       r-   $test_frame_from_json_bad_data_raisesz8TestPandasContainer.test_frame_from_json_bad_data_raisesZ  s6    F ]]:S1 	5htnV4	5 	5 	5s	   <Ac                 x   t        ddgg dg      }t        t        |j                  |            |||      }t	        j
                  |j                  d         sJ t        ddgg d	g      }t        t        |j                  |            |||      }t	        j
                  |j                  d         sJ y )
Nr   r   ri   r@      ru   r   r   r   12)456)r
   r   r   r'   rP   isnanr   )rX   r7   r   rH   num_dfr,   obj_dfs          r-   !test_frame_from_json_missing_dataz5TestPandasContainer.test_frame_from_json_missing_data  s     QFI./V^^6^23%	
 xxD)***S#J89V^^6^23%	
 xxD)***r9   c                     t        t        d      |      }t        t        j                  g      }t        j                  ||       y )Nz[null]rG   )r   r   r
   rP   nanr#   r(   )rX   rH   r,   r)   s       r-   (test_frame_read_json_dtype_missing_valuez<TestPandasContainer.test_frame_read_json_dtype_missing_value  s5     8H-U;bffX&
fh/r9   infc                     t        ddgg dg      }||j                  d<   t        |j                               }t	        ||      }t        j                  |j                  d         sJ y )Nr   r   r   r   rG   )r
   locr   r'   r   rP   r   r   )rX   r   rH   rp   r[   r,   s         r-   test_frame_infinityz'TestPandasContainer.test_frame_infinity  s[    
 A	*+t

%4u-xxD)***r9   z$not compliant on 32-bit, xref #15865r   zvalue,precision,expected_val))gffffff?r   r   )g333333?r   r   )g333333r   g       )gףp=
?r   r   )gCl?r   r   )g?rD   r   c                 Z    t        d|ig      }|j                  |      }|d| dk(  sJ y )Na_float)double_precisionz{"a_float":{"0":}}r
   r'   )rX   value	precisionexpected_valrp   encodeds         r-   "test_frame_to_json_float_precisionz6TestPandasContainer.test_frame_to_json_float_precision  s>     E*+,**i*8.|nDAAAAr9   c                     t        g d      }d}t        j                  t        |      5  |j	                  d       d d d        y # 1 sw Y   y xY wNr   r   r   z+Invalid value 'garbage' for option 'orient'r   garbageru   r   )rX   rp   r+   s      r-   test_frame_to_json_exceptz-TestPandasContainer.test_frame_to_json_except  sB    y!;]]:S1 	)JJiJ(	) 	) 	)   AAc                     t        ddg      }|j                  rJ t        |j                               }t	        |t        |j                              }t        j                  ||d       y )Njimjoer   rG   Fcheck_index_type)	r
   _is_mixed_typer   r'   r   dictdtypesr#   r(   )rX   rp   r[   r,   s       r-   test_frame_emptyz$TestPandasContainer.test_frame_empty  sU    u~.$$$$

%4tBII7
fb5Ar9   c                 X    t        dg ig       }|j                  d      }d}||k(  sJ y )NtestrL   r   ru   z{"test":{}}r   rX   rp   r,   r)   s       r-   test_frame_empty_to_jsonz,TestPandasContainer.test_frame_empty_to_json  s5    |2.9- !!!r9   c                    t        ddg      }|d   j                  d      |d<   |j                  sJ |j                         }t	        j
                  t        t        |      t        |j                              |d       y )Nr  r  r   i8rG   Fr  )
r
   r   r  r'   r#   r(   r   r   r  r  )rX   rp   r[   s      r-   test_frame_empty_mixedtypez.TestPandasContainer.test_frame_empty_mixedtype  sl    u~.uI$$T*5	    zz|
htnDO<"	
r9   c                    g dg dg dg dg}t        |t        d      g d      }|j                  sJ |j                         }dD ]A  }t	        |j                  |	            }t        ||d
      }t        j                  ||       C t        t        |            |_        t	        |j                  d	            }t        |dd
      }t        j                  ||       t        |j                  d         |_        t	        |j                  d	            }t        |dd
      }t        j                  ||       y )N)r_   r   rC   皙?g{Gz?)   r   rA   g?g{Gz?)r>   r   rB   g333333?gQ?)(   ri   quxg?g{Gz?abcd)1st2nd3rd4th5thrt   rz   rM   r   ru   Fr   r0   r   r1   )r
   rO   r  rw   r   r'   r   r#   r(   r   r6   rM   shaper   )rX   valsrp   rightr7   inplefts          r-   test_frame_mixedtype_orientz/TestPandasContainer.test_frame_mixedtype_orient  s   %%%%	
 V.Q
     	3 	/F2::V:45CSeDD!!$.	/
 !R)rzzz34YUC
dE*"288A;/rzzz23XEB
dE*r9   c                    t        dd      }t        t        j                  |      d       }t	        g dg dg dg dg dgg d	|
      }t        d      j                  d      |d<   t        d      |j                  d|j                  j                  d      f<   |d   |d<   t        j                  |j                  d|j                  j                  d      f<    |ddd      }t        j                  j                  |d      }t        |      }t!        j"                  ||       |j%                  dgd      }t        j                  j                  |d      }t        |      }	t!        j"                  ||	d       y )Nz
2000-01-03z
2000-01-07rm   )gÉ?gz~Kc?gX7?gH/ƿ)g|RпgXgsBfg(ƿ)g<1=?g9?gg??gLł
)gJQg[r?T?gj<DH>?g-ѿ)gIEx?gW!i`ygP04?g+]5?r   rn   z19920106 18:21:32.12nsdater   r   modifiedr   iojsonr[   ztsframe_v012.json)axisztsframe_iso_v012.jsonF)check_column_type)r   r   rP   asarrayr
   r   as_unitr   r   get_locrV   NaTospathjoinr   r#   r(   r3   )
rX   datapathdtirp   dirpathv12_jsondf_unserdf_isov12_iso_jsondf_unser_isos
             r-   test_v12_compatz#TestPandasContainer.test_v12_compat  s@   |4BJJsO$7AC?BA )

 56>>tD6
1::1F2::%%f--.F:57VV2::%%j1124077<<)<=X&
b(+*A.ww||G-DE .
fleLr9   c           	      v   t        ddd      }t        t        |      d       }t        g dg dg dg d	g d
g dd|      }|j                  j                  |st        j                  nd      |_        t        |j                  d            }t        |d      }t        j                  ||dddd       y )N20000101r_   hrl   r#  )
g}S? wgbm?gz(~J	?g1?gk*MgvTj?g7j	" Y?gp+KS(g񒬁?gZtSy)
iL,i_}i4ziKeiL&i%giDiY)L i;eiD )
78c608f164a9974313d2ff52ca7f4af297236474bde7e2141a6bde47b1190be57a6691448d64d068)
gD!gIxJ g%
@gP\<g޿gPl?gFzn?g5mH/?gpH%gI?)
14f04af9d085da904bcfac8381504caf2ffef4a908e2f5c407e1af03addbd4a71f6a09ba4bfc4d87)
i/iiYi6iI i;>i	i( i0q{iѪ)float_1int_1str_1float_2str_2int_2rL   r   rz   ru   T)r  r*  	by_blockscheck_exact)r   r   rO   r
   r   r   rP   str_r   r'   r   r#   r(   )rX   r   rM   df_mixedr[   df_roundtrips         r-   test_blocks_compat_GH9037z-TestPandasContainer.test_blocks_compat_GH9037  s    :r<d5k5{IT WL
^ $++22-BGG3J
 (((89 g6
!"	
r9   c                 Z    G d d      }d} ||      }t        d|j                  gi      }|j                         d| dk(  sJ t        d|gi      }d}t        j                  t
        |      5  |j                          d d d        t        |gd	gd
ddg      }t        j                  t
        |      5  |j                          d d d        |j                  t              }d| d}	||	k(  sJ |j                  t              d| dk(  sJ y # 1 sw Y   xY w# 1 sw Y   XxY w)Nc                        e Zd ZddZdefdZy)FTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingreturnNc                 F    || _         t        j                  |      | _        y N)hexedbytesfromhexbinary)rX   rd  s     r-   __init__zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__  s    "
#mmE2r9   c                     | j                   S rc  )rd  rX   s    r-   __str__zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__  s    zz!r9   ra  N)__name__
__module____qualname__rh  r   rk  r   r9   r-   BinaryThingr`  ~  s    3" "r9   rp  574b4454ba8c5eb4f98a8f45r   z{"A":{"0":""}}z6Unsupported UTF-8 sequence length when encoding stringr   r   r   rk   rk   r   default_handlerz"},"B":{"0":1}})r
   rd  r'   r   r   OverflowErrorr   )
rX   rp  rd  binthingdf_printabledf_nonprintabler+   r[  r,   r)   s
             r-   test_frame_nonprintable_bytesz1TestPandasContainer.test_frame_nonprintable_bytes{  sD   	" 	" +u% !#'7!89##%=u)EEEE $S8*$56F]]=4 	&##%	& H:QC83*M]]=4 		 !(((="5'/!!!S1ug%89:	
:	& 	&
	 	s   1D9D!D!D*c                 h    t        ddz  dgddgi      j                         }dddz   d}||k(  sJ y )NrA   i r   rC   i9  {"z":{"0":1},"foo":{"0":1337}}r   rX   r,   r)   s      r-   test_label_overflowz'TestPandasContainer.test_label_overflow  sH    EFNQC?@HHJ((HI!!!r9   c           
         t        ddgddg      }d}t        j                  t        |      5  |j	                  d       d d d        t        j                  |t        t        |j	                  d	            d	d
             t        t        |j	                  d            dd
      }t        j                  |j                  |j                         y # 1 sw Y   xY w)Nr   r   r   rL   z.Series index must be unique for orient='index'r   rM   ru   rz   series)r7   typr0   )r   r   r   r&   r'   r#   assert_series_equalr   r   assert_equalr1   )rX   sr+   unserializeds       r-   test_series_non_unique_indexz0TestPandasContainer.test_series_non_unique_index  s    C:aV,>]]:S1 	&IIWI%	& 	'23G	
 !QYYiY01)
 	,"5"56	& 	&s   CC c                 N    |j                         |j                  d      k(  sJ y )NrM   ru   r   )rX   string_seriess     r-   test_series_default_orientz.TestPandasContainer.test_series_default_orient  s'    $$&-*?*?w*?*OOOOr9   c                    t        |j                  |            }t        |d|      }|}|r$|dv r |j                  j	                  d      |_        |dv r|j                  d      }|d	k7  rd |_        t        j                  ||       y )
Nru   r  r  r7   r  r   r1   r0   Tr2   rz   )	r   r'   r   rM   r   r4   rK   r#   r  )rX   r7   r  r   r[   r,   r)   s          r-   test_series_roundtrip_simplez0TestPandasContainer.test_series_roundtrip_simple  s    --V-<=4Xf= &,I"I%^^223JKHN**+++6HW HM
vx0r9   c                     t        |j                  |            }t        |d||      }|}|dv r|j                  d      }|dk7  rd |_        t        j                  ||       y )Nru   r  )r  r7   rH   r  Tr2   rz   r   r'   r   r4   rK   r#   r  )rX   r7   rH   object_seriesr[   r,   r)   s          r-   test_series_roundtrip_objectz0TestPandasContainer.test_series_roundtrip_object  sj    --V-<=4XfEJ **+++6HW HM
vx0r9   c                 B   t        g g t        j                        }t        |j	                  |            }t        |d|      }|j                  d      }|dv r.|j                  j                  t        j                        |_        t        j                  ||       y )NrM   rH   ru   r  r  Tr2   rz   )r   rP   rd   r   r'   r   r4   rM   r   r#   r  )rX   r7   empty_seriesr[   r,   r)   s         r-   test_series_roundtrip_emptyz/TestPandasContainer.test_series_roundtrip_empty  s    b"**=,,F,;<4Xf=+++6g%^^222::>HN
vx0r9   c                     t        |j                  |            }t        |d|      }|}|dv r|j                  d      }|dk7  rd |_        t        j                  ||       y )Nru   r  r  r  Tr2   rz   r  )rX   r7   rg   r[   r,   r)   s         r-    test_series_roundtrip_timeseriesz4TestPandasContainer.test_series_roundtrip_timeseries  sh    //v/>?4Xf="**+++6HW HM
vx0r9   c                     t        t        d      g d      }t        |j                  |            }t	        |d|      }|j                         }|dv r|j                  d	      }t        j                  ||       y )
Nr   r   r   rZ   rs   r   frL   ru   r  r  r  Tr2   )	r   r5   r   r'   r   rw   r4   r#   r  )rX   r7   rH   r  r[   r,   r)   s          r-   test_series_roundtrip_numericz1TestPandasContainer.test_series_roundtrip_numeric  sm    58#AB			014Xf=668**+++6H
vx0r9   c                     t        g d      }d}t        j                  t        |      5  |j	                  d       d d d        y # 1 sw Y   y xY wr   )r   r   r   r&   r'   )rX   r  r+   s      r-   test_series_to_json_exceptz.TestPandasContainer.test_series_to_json_except  sB    9;]]:S1 	(IIYI'	( 	( 	(r   c                     t        g d      }t        t        |j                               dd      }t	        j
                  ||d       y )N=
ףp=@r  r  r  T)r  precise_floatFr  )r   r   r   r'   r#   r  rX   r  r,   s      r-   #test_series_from_json_precise_floatz7TestPandasContainer.test_series_from_json_precise_float  s8    %&8AIIK0hdS
vq5Ar9   c                     t        g d      }t        t        |j                               dt        j
                        }t        dgdz        }t        j                  ||       y )Nr  r  r  rH   ri   r   )r   r   r   r'   rP   rF   r#   r  )rX   r  r,   r)   s       r-   test_series_with_dtypez*TestPandasContainer.test_series_with_dtype  sI    %&8AIIK0hbhhO1#'?
vx0r9   zdtype,expectedrj   r   rG   l    ,Uqc                     t        dgd      }t        |j                               }t        |d|      }t	        j
                  ||       y )Nrj   r   rG   r  r  )r   r   r'   r   r#   r  )rX   rH   r)   r  r[   r,   s         r-   test_series_with_dtype_datetimez3TestPandasContainer.test_series_with_dtype_datetime  sA     L>)9:		$4XU;
vx0r9   c                     t        g dg dg      }t        t        |j                               d      }t	        j
                  ||       y )Nr  T)r  r
   r   r   r'   r#   r(   rX   rp   r,   s      r-   "test_frame_from_json_precise_floatz6TestPandasContainer.test_frame_from_json_precise_float  s:    *,>?@8BJJL1F
fb)r9   c                     t        t        d      g dd      }t        t        |j	                               d       }t        j                  ||       y )Nr   r  rF   r  r  )r   r5   r   r   r'   r#   r  r  s      r-   test_typzTestPandasContainer.test_typ  s<    58#AQ8AIIK0d;
vq)r9   c                 2   t        g dg dg      }t        t        |j                                     }t	        j
                  ||       t        g dg ddg d      }t        t        |j                                     }t	        j
                  ||       y )Nr   r   r   r   )r   rk   r   rL   r  r  s      r-   test_reconstruction_indexz-TestPandasContainer.test_reconstruction_index$  sl    	9-.8BJJL12
fb)YY7O8BJJL12
fb)r9   c                     t        j                  d      5 }|||fD ]  }|j                  |       t        |         	 d d d        y # 1 sw Y   y xY w)N	test.json)r#   ensure_cleanr'   r   )rX   r   r   rq   r0  rp   s         r-   	test_pathzTestPandasContainer.test_path-  sN    __[) 	 T"I~>  

4 $ 	  	  	 s   'AAc                    t        |j                               }t        |      }t        j                  ||       t        |j                               }t        |d      }t        j
                  ||d       |j                  J y )Nr  r  F)check_names)r   r'   r   r#   r(   r  rK   )rX   rg   rq   r(  r,   s        r-   test_axis_datesz#TestPandasContainer.test_axis_dates3  sq    ..014
fn5 //124X.
vEJ{{"""r9   c                    |}t        d      j                  d      |d<   t        |j                               }t	        |      }t        j                  ||       d|d<   t        |j                  d            }t	        |d      }|j                         }|d   j                  j                  d	      |d<   |d   j                  d
      |d<   t        j                  ||       t        t        d      j                  d      |j                        }t        |j                               }t	        |d      }t        j                  ||       y )Nr   r$  r%  r   rC   	date_unitFr   r  rF   rL   r  r  )r   r,  r   r'   r   r#   r(   rw   r1   r   r   r   rM   r  )rX   rg   rq   rp   r(  r,   r)   rc   s           r-   test_convert_datesz&TestPandasContainer.test_convert_dates?  s   z*22486


%4
fb)5	

T
234u5779#F+2277="5/009
fh/ Ij)11$7?T?TU

%4X.
vr*r9   date_formatepochiso	as_objectdate_typc                      |ddd      t         j                  g}|r|j                  d       t        ||      }|j	                  |      }|dk(  rd}nd	}|r|j                  d
d      }||k(  sJ y )Ni  r   )yearmonthdayr   rL   r  r  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}}	,"a":"a"})rV   r.  appendr   r'   replace)rX   r  r  r  r[   rf   r,   r)   s           r-   test_date_index_and_valuesz.TestPandasContainer.test_date_index_and_valuesW  s     d!3RVV<KKT&5'!DH T  ''[9H!!!r9   
infer_word)
trade_timer%  datetimesold_atr&  	timestamp
timestampsc                     dd|diddig}t        dt        d      gdt        j                  ggd|g      }t	        t        t        |                  d|g   }t        j                  ||       y )Nidr   l    $Ar   z
2002-11-08r   )	r
   r   rV   r.  r   r   r   r#   r(   )rX   r  r[   r)   r,   s        r-   test_convert_dates_inferz,TestPandasContainer.test_convert_dates_infern  sv     q*m4tQi@<()Arvv;7$
AS
 8K$567z8JK
fh/r9   zdate,date_unit))20130101 20:43:42.123N)20130101 20:43:42r  )r  ms)z20130101 20:43:42.123456us)z20130101 20:43:42.123456789r$  c                    |}t        |      j                  d      |d<   t        j                  |j                  d|j
                  j                  d      f<   t        j                  |j                  d|j
                  j                  d      f<   |r|j                  d|      }n|j                  d      }t        t        |            }|j                         }t        j                  ||       y )Nr$  r%  r   r@   r  r  r  r  )r   r,  rV   r.  r   r   r-  r'   r   r   rw   r#   r(   )rX   r%  r  rq   rp   r(  r,   r)   s           r-   test_date_format_framez*TestPandasContainer.test_date_format_frame  s     t_,,T26
132::%%f--.132::%%f--.::%9:ED::%:0D8D>*779
fh/r9   c                     |}d}t        j                  t        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)N*Invalid value 'foo' for option 'date_unit'r   r  rC   r  )r   r   r&   r'   )rX   rq   rp   r+   s       r-   test_date_format_frame_raisesz1TestPandasContainer.test_date_format_frame_raises  s?    :]]:S1 	;JJ5EJ:	; 	; 	;s	   =Ac                    t        t        |      j                  d      |j                        }t        j
                  |j                  d<   t        j
                  |j                  d<   |r|j                  d|      }n|j                  d      }t        t        |      d	      }|j                         }t        j                  ||       y )
Nr$  rL   r   r@   r  r  r  r  r  )r   r   r,  rM   rV   r.  r   r'   r   r   rw   r#   r  )rX   r%  r  rg   rc   r(  r,   r)   s           r-   test_date_format_seriesz+TestPandasContainer.test_date_format_series  s     IdO++D19N9NOVV
VV
::%9:ED::%:0D8D>x8779
vx0r9   c                     t        t        d      |j                        }d}t        j                  t
        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)Nr  rL   r  r   r  rC   r  )r   r   rM   r   r   r&   r'   )rX   rg   rc   r+   s       r-   test_date_format_series_raisesz2TestPandasContainer.test_date_format_series_raises  sR    I56o>S>ST:]]:S1 	;JJ5EJ:	; 	; 	;s   AA$unit)r  r  r  r$  c                    |}t        d      j                  d      |d<   |j                  j                  d      }t        d      |j                  d|f<   t        d      |j                  d|f<   t
        j                  |j                  d|f<   |j                  d	|
      }t        t        |      |      }t        j                  ||       t        t        |      d       }t        j                  ||       y )Nr  r$  r%  z19710101 20:43:42r   z21460101 20:43:42r   ri   r  r  r  )r   r,  r   r-  r   rV   r.  r'   r   r   r#   r(   )rX   r  rq   rp   dlr(  r,   s          r-   test_date_unitz"TestPandasContainer.test_date_unit  s    23;;DA6
ZZ'"#672"#6722zzgz> 8D>T:
fb) 8D>T:
fb)r9   )r  r  r  c           	         t        t        j                  d|      gd| d      }t        t	        t        j                  d|      gd| d|      t	        t        j                  d|      gt
        |      d      }t               }|j                  |d|	       |j                  d
       t        j                  t        |ddg      |dd       y )Nz2023-01-01T11:22:33.123456zdatetime64[]rG   z2022-01-01T11:22:33.123456rH   rM   )r%  date_objr  r  r   r%  r  r  F)r  check_dtype)r   rP   
datetime64r
   r   ro   r   r'   seekr#   r(   r   )rX   r  rM   rp   bufs        r-   test_iso_non_nano_datetimesz/TestPandasContainer.test_iso_non_nano_datetimes  s     ]]7>?vQ'
 ]]#?FG'vQ/
 #]]#?FG 
 j


3ET
:
 	c&*)=>"		
r9   c                 0    d}t        t        |             y )Nad  {
        "status": "success",
        "data": {
        "posts": [
            {
            "id": 1,
            "title": "A blog post",
            "body": "Some useful content"
            },
            {
            "id": 2,
            "title": "Another blog post",
            "body": "More content"
            }
           ]
          }
        })r   r   )rX   r  s     r-   test_weird_nested_jsonz*TestPandasContainer.test_weird_nested_json  s    " 	(1+r9   c                    t        t        j                  j                  d      j	                  d      t        d            }t        d      |d<   t        d      |d<   d	|d
<   t        dd      |_	        t        |j                               }t        |t        j                  t        j                  d      }t        j                   ||       y )Nr   )r@   r   ABr   r   r%  r@   intsTboolsra   )r  r  rG   )r
   rP   rQ   rR   rS   rO   r   r5   r   rM   r   r'   r   rF   bool_r#   r(   )rX   dfj2r(  r,   s       r-   test_doc_examplez$TestPandasContainer.test_doc_example  s    II!!!$44V<d4j
 !,VQxVW
A6
'4288'LM
ff-r9   c                     |dddd      }t        j                  |      }|j                         }t        t	        |            }|j                  |j                  |j                        }d}t        j                  t        |      5  |j                  t        j                  d	      }d d d        t        j                  ||       y # 1 sw Y    xY w)
Nr'  r(  r[   z	teams.csvrt   z.The 'downcast' keyword in fillna is deprecatedr   F)downcast)rV   read_csvr'   r   r   reindexrM   r   r#   r$   r%   fillnarP   r   r(   )rX   r2  r0  rp   r  r,   resr+   s           r-   test_round_trip_exceptionz-TestPandasContainer.test_round_trip_exception  s    ffk:[[JJL8A;'nn288RZZn@>''SA 	5**RVVe*4C	5
c2&	5 	5s   	"C

Czfield,dtype
created_atUTC)tz	closed_at
updated_atc                     d}|j                  |       t        |j                  d      }||   j                  |k(  sJ y )Nzw{"created_at": ["2023-06-23T18:21:36Z"], "closed_at": ["2023-06-23T18:21:36"], "updated_at": ["2023-06-23T18:21:36Z"]}
)contentTr  )serve_contentr   urlrH   )rX   fieldrH   
httpserverr[   r,   s         r-   test_urlzTestPandasContainer.test_url*  sC     J   .:>>>e}""e+++r9   c           	         d }t        t        d      t        d      g      }|j                  dk(  sJ t        t	        |j                               d      j                  |      }t        j                  ||       t        t        d      t        d      gt        dd	g      
      }|j                  dk(  sJ t        t	        |j                               d      j                  |      }t        j                  ||       t        t        d      t        d      g      }|d   j                  dk(  sJ t        j                  |t        t	        |j                                     j                  |             y )Nc                 0    t        j                  | d      S )Nr  r  )rV   to_timedelta)r|   s    r-   <lambda>z4TestPandasContainer.test_timedelta.<locals>.<lambda>;  s    booad; r9      r@   secondsztimedelta64[ns]r  r  r   r   rL   )r   r   rH   r   r   r'   applyr#   r  r   r
   r(   )rX   	converterrf   r,   frames        r-   test_timedeltaz"TestPandasContainer.test_timedelta:  s(   ;	imYq%9:;yy----8CKKM2AGG	R
vs+imYq%9:%A-Pyy----8CKKM2AGG	R
vs+9R=)A*>?@Qx~~!2222
9Xemmo67==iH	
r9   c                 l   t        t        d      t        d      gddgt        dd      d	      }t        |j	                  d
            }t        |      }t        j                  |j                  d
      |d<   t        j                  |j                        |d<   t        j                  ||       y )Nr  daysr@   r  r   r   r   )startrb   r   r   rZ   r$  r  r  r   rZ   )r
   r   r   r   r'   r   rV   r  r   to_datetimerZ   r#   r(   )rX   r  r[   r,   s       r-   test_timedelta2z#TestPandasContainer.test_timedelta2N  s    R()A*>?Vj!<
 564oofhhT:snnVXX.s
eV,r9   c                    t        d      }t        d      }t        d||git              }t        dt	        j
                  |      j                  d      j                  |j                  d      j                  gi      }t        |j                  d            }t        |ddi      }t        j                  ||d	       y )
Nr  r   r   rG   r$  r  rF   Fr  )r   r   r
   ro   rV   	Timedeltar,  _valuer   r'   r   r#   r(   )rX   tdrc   r  r)   r[   r,   s          r-   test_mixed_timedelta_datetimez1TestPandasContainer.test_mixed_timedelta_datetime\  s    r]z"3R/82<<#++D188"**T:J:Q:QRS
 564W~6
fhGr9   timedelta_typc                      |d       |d      t         j                  g}|r|j                  d       t        ||      }|dk(  rd}nd}|r|j	                  d	d
      }|j                  |      }||k(  sJ y )Nr   r  r   r   rL   r  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r  r  r  )rV   r.  r  r   r  r'   )rX   r  r  r&  r[   rf   r)   r,   s           r-   test_timedelta_to_jsonz*TestPandasContainer.test_timedelta_to_jsonh  s    
 1%}!'<bffEKKT&%S  QH''[9H5!!!r9   c                      |d      g}t        ||      }|r|j                  t              }|j                         }d}||k(  sJ y )N*   )millisecondsrL   z	{"42":42})r   r   ro   r'   )rX   r  r&  r[   rf   r,   r)   s          r-   +test_timedelta_to_json_fractional_precisionz?TestPandasContainer.test_timedelta_to_json_fractional_precision  sL     2./T&**V$C!!!r9   c                     t               }t        dd|gi      }t        ddt        |      gi      }t        t	        |j                  t                          }t        j                  ||d       y )Nr      rt  Fr  )ro   r
   r   r   r   r'   r#   r(   )rX   r   r  r)   r,   s        r-   test_default_handlerz(TestPandasContainer.test_default_handler  s_    3E
+,cAs5z?348EMM#M$FGH
hGr9   c           	          d }dt        ddt        dd      gt        d      d dgd	d
dg      g}d}t        ||d      |k(  sJ y )Nc                 r    t        | t              rdd| j                  fd| j                  fgS t	        |       S )N)mathjsComplexreim)
isinstancecomplexrealimagr   )objs    r-   defaultzBTestPandasContainer.test_default_handler_indirect.<locals>.default  s4    #w'-chh/?$AQRRs8Or9   	   r   STRri   r   zN/Ar  r   r   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r1   ru  r7   )r
   r7  r   r   )rX   r;  df_listr)   s       r-   test_default_handler_indirectz1TestPandasContainer.test_default_handler_indirect  sg    	 %B0edE7RSc

1 	
 JhV	
Vr9   c           	          t        ddt        dd      gt        d      d t        dd      gdd	d
g      }d}|j                  t        d      |k(  sJ y )Nr   gffffff@ri   r>  r   g333333?r   r  r   r   r   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r1   r?  )r
   r7  r   r'   r   )rX   rp   r)   s      r-   ,test_default_handler_numpy_unsupported_dtypez@TestPandasContainer.test_default_handler_numpy_unsupported_dtype  sa    c71b>*%,gcSTo1VW#J

% 	
 zz#hz?8KKKr9   c           
      x   dfd}t        j                  t              5  t        dddt	               gi      j                  |       d d d        t        j                  t              5  t        dddt        dd	      gi      j                  |       d d d        y # 1 sw Y   XxY w# 1 sw Y   y xY w)
Nraisinc                     t              rc  )	TypeError)r:  r+   s    r-   my_handler_raiseszJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raises  s    C. r9   r   r   r   r   rt  ri   r>  )r   r   rG  r
   ro   r'   r7  )rX   rH  r+   s     @r-   test_default_handler_raisesz/TestPandasContainer.test_default_handler_raises  s    	! ]]9C0 	sQ68,-.66 1 7 	 ]]9C0 	sQ71b>234<< 1 = 	 			 		 	s   )B$0+B0$B-0B9c                    t        dg di      }|d   |d<   |j                         }|d   j                  d      |d<   ||j                         k(  sJ |d   }|d   }|j                         |j                         k(  sJ y )Nr   )r   r   rZ   r   r   r   r   rk   category)r
   r'   r   )rX   rp   r)   r  scs        r-   test_categoricalz$TestPandasContainer.test_categorical  s    @ABS'3::<S'..,32::<'''sGWyy{bjjl***r9   c                 x   t        ddd      }|j                  d      j                  d       }t        |t        dd      d      }|j	                         }||d<   |j                         }||j                         k(  sJ t        |      }t        |      }|j                         |j                         k(  sJ y )	Nr   r   
US/Easternrb   r  utcra   rs  r   )r   
tz_converttz_localizer
   rw   r'   r   )rX   tz_rangetz_naiverp   df_naiver)   stzs_naives           r-   test_datetime_tzz$TestPandasContainer.test_datetime_tz  s    j!E&&u-99$?XJz1,MNO779 ##%2::<'''X"{{} 1111r9   c                 ,   t        t        j                  j                  d      j	                  d            }t        j
                  |j                  d d |j                  d      }|j                         }||j                         k(  sJ t        t        j                  j                  d      j	                  d            }t        j
                  |j                  d d |j                  d      }|j                         }||j                         k(  sJ y )Nr   )r_   ri      Sparser_   )
r
   rP   rQ   rR   rS   r   r   r   r'   r   )rX   rp   sdfr)   r  sss         r-   test_sparsezTestPandasContainer.test_sparse  s    ryy,,Q/??HIVVr
ii!::<3;;=(((299((+;;B?@FFbq	XXh99;2::<'''r9   rc   z2013-01-10 05:00:00Zz2013-01-10 00:00:00rO  z2013-01-10 00:00:00-0500c                 p    d}t        |d      |k(  sJ |j                         }t        |d      |k(  sJ y )Nz"2013-01-10T05:00:00.000Z"T	iso_dates)r   to_pydatetimerX   rc   expdts       r-   test_tz_is_utcz"TestPandasContainer.test_tz_is_utc  sA     +2.#5552.#555r9   c                     t        d      }d}t        |d      |k(  sJ |j                         }t        |d      |k(  sJ y )Nz2013-01-10 05:00:00z"2013-01-10T05:00:00.000"Tra  )r   r   rc  rd  s       r-   test_tz_is_naivez$TestPandasContainer.test_tz_is_naive  sJ    ,-)2.#5552.#555r9   rT  z2013-01-01 05:00:00Zr   ra   z2013-01-01 00:00:00rP  z2013-01-01 00:00:00-0500c                 >   d}d}t        |d      |k(  sJ t        |      }t        |d      |k(  sJ t        |j                  t              d      |k(  sJ t	        d|i      }t        |d      }||k(  sJ t        |j                  dt        i      d      sJ y )Nz7["2013-01-01T05:00:00.000Z","2013-01-02T05:00:00.000Z"]zF{"DT":{"0":"2013-01-01T05:00:00.000Z","1":"2013-01-02T05:00:00.000Z"}}Tra  DT)r   r   r   ro   r
   )rX   rT  re  dfexpr3  rp   r,   s          r-   test_tz_range_is_utcz(TestPandasContainer.test_tz_range_is_utc  s     H/ 	 8t4;;;H% 3$/36663::f->#EEEc{#R40299dF^4EEEr9   c                    t        dd      }d}d}t        |d      |k(  sJ t        |j                  t              d      |k(  sJ t	        d|i      }t        |d      }||k(  sJ t        |j                  dt        i      d      sJ y )	Nz2013-01-01 05:00:00r   ra   z5["2013-01-01T05:00:00.000","2013-01-02T05:00:00.000"]zD{"DT":{"0":"2013-01-01T05:00:00.000","1":"2013-01-02T05:00:00.000"}}Tra  rk  )r   r   r   ro   r
   )rX   r3  re  rl  rp   r,   s         r-   test_tz_range_is_naivez*TestPandasContainer.test_tz_range_is_naive"  s    .:EV 3$/36663::f->#EEEc{#R40299dF^4EEEr9   c                     t        t        d      d      }t        ddgddggddg      }t        j                  ||       y )	Nr!   Tr   r   r   r   r   r   r   r   r
   r#   r(   r}  s      r-   test_read_inline_jsonlz*TestPandasContainer.test_read_inline_jsonl1  sD     8$IJRVWq!fq!f-SzB
fh/r9   c                     t        d|j                   dd|      }t        ddgddggddg	      }t        j                  ||       y )
Nzs3n://z/items.jsonlT)r    storage_optionsr   r   r   r   r   )r   rK   r
   r#   r(   )rX   s3_public_bucket_with_datas3sor,   r)   s        r-   test_read_s3_jsonlz&TestPandasContainer.test_read_s3_jsonl8  sW    
 /445\B 

 q!fq!f-SzB
fh/r9   c                 0   t        j                  d      5 }t        |dd      5 }|j                  d       d d d        t	        |d      }t        dd	gdd	ggd
dg      }t        j                  ||       d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY w)Nztmp_items.jsonwzutf-8encodingr!   Tr   r   r   r   r   r   )r#   r  openwriter   r
   r(   )rX   r0  infiler,   r)   s        r-   test_read_local_jsonlz)TestPandasContainer.test_read_local_jsonlE  s    __-. 	4$dC'2 DfBCDt40F 1a&1a&!1C:FH!!&(3	4 	4D D	4 	4s"   BB A B B		BBc                    d}t        |      }t        |d      }t        ddgddggddg	      }t        j                  ||       t        d      }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”rA   rC   r   r   r   )r   r   r
   r#   r(   rX   r(  r,   r)   s       r-   test_read_jsonl_unicode_charsz1TestPandasContainer.test_read_jsonl_unicode_charsN  s    
 I~4t,{E2UENCcSVZX
fh/ QR4t,{E2UENCcSVZX
fh/r9   bigNumc                     t        |t        dg      }|j                         }dt        |      z   dz   }||k(  sJ t	        |t        dgdg      }|j                         }dt        |      z   dz   }||k(  sJ y )	N	articleIdr  {"articleId":r  r   rH   rM   r   {"0":{"articleId":r   )r   ro   r'   r   r
   )rX   r  r  r(  r)   rp   s         r-   test_to_json_large_numbersz.TestPandasContainer.test_to_json_large_numbers_  s     f[MB~~"S[036xvVK=1#Nzz|'#f+5<xr9   l        l            c                 \   t        dt        |      z   dz         }d}t        j                  t        |      5  t        |       d d d        t        dt        |      z   dz         }t        j                  t        |      5  t        |       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nr  r  z#Value is too small|Value is too bigr   r  r   )r   r   r   r   r&   r   )rX   r  r(  r+   s       r-   test_read_json_large_numbersz0TestPandasContainer.test_read_json_large_numbersl  s     #f+5;<4]]:S1 	dO	 ,s6{:TAB]]:S1 	dO	 			 		 	s   BB"B"B+c                     d}t        |      }t        |d      }t        ddg      }t        j                  ||       d}t        |      }t        |      }t        ddgdg	      }t        j                  ||       y )
Nz'{"articleId": "1404366058080022500245"}r  r  gg_SDr  rL   z.{"0": {"articleId": "1404366058080022500245"}}r   rt   )r   r   r   r#   r  r
   r(   r  s       r-   test_read_json_large_numbers2z1TestPandasContainer.test_read_json_large_numbers2x  ss    8~4X.+k];
vx0?~4[sK
fh/r9   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   r0   Tr7   r    z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}rA   zfoo"z/{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"}
r   zfoo\za\r"   )r
   r'   r#   r(   r   r   r  s       r-   test_to_jsonlz!TestPandasContainer.test_to_jsonl  s   AA'#s<9D93!!!&%9C:N9D9G!!!
i(8ErJ %(65/:UCLQ9D9R!!!
i(8ErJr9   z%GH#13774 encoding kwarg not supportedval)   E, 17r9      a   b   c)r  r  r  r  )s   EE, 17r9   r  r  r  )r     r  r  r  )r9   r  r  r  )r  r  r  r  )   Ar9   r  r  r  r9   r  r  r  rK  c           	      `   t        |D cg c]%  }t        |t              r|j                  d      n|' c}|      }d}t	        j
                  d      5 }|j                  ||       t        t        |      |      }t	        j                  ||d       d d d        y c c}w # 1 sw Y   y xY w)Nzlatin-1rG   r  rz  F)check_categorical)
r   r6  re  decoder#   r  r'   r   r   r  )rX   rH   r  r|   rf   r{  r0  retrs           r-   test_latin_encodingz'TestPandasContainer.test_latin_encoding  s    $ ILMAJq%$8QXXi a?M
 __[) 	GTKKxK0Xd^h?D""3F	G 	G	 N	G 	Gs   *BAB$$B-c                     t        dt        d      gi      }|j                  dd      j                         }|j	                          |j                  dd      j                         }||k(  sJ y )Nr   r   T)rM   deep)r
   r   memory_usagesumr'   )rX   rp   size_before
size_afters       r-   "test_data_frame_size_after_to_jsonz6TestPandasContainer.test_data_frame_size_after_to_json  sc    c!fX'ooDto<@@B


__4d_;??A
j(((r9   r   r   r   r   1.2.c                     t        ddgddgg||      }|j                  d      }t        t        |      d      }t	        j
                  ||       y )Nr   r   r   ri   rt   tableru   r
   r'   r   r   r#   r(   )rX   rM   r   r)   dfjsonr,   s         r-   .test_from_json_to_json_table_index_and_columnszBTestPandasContainer.test_from_json_to_json_table_index_and_columns  sS     q!fq!f-UGL!!!18F+G<
fh/r9   c                     t        ddgddgddgd      }|j                  d	      }t        t        |      d	      }t	        j
                  ||       y )
Nr   r   r   r   r   r   r  r  ru   r  )rX   r)   r  r,   s       r-   #test_from_json_to_json_table_dtypesz7TestPandasContainer.test_from_json_to_json_table_dtypes  sS    Aq6c
#sLM!!!18F+G<
fh/r9   zincorrect na conversion)rz   r0   rM   r   c                 d   t        j                  t        g dd      t        g dd      t        g dd      t        g dd	      t        g d
d      t        g dd      d      }|j                  |      }t	        t        |      |dddd	ddd      }t        j                  ||       y )Nr   rF   rG   )Nr   r   rd   )N rZ   ro   TFTboolr   r   NrK  )r`   Nz
2020-01-03r   )IntegerFloatObjectBoolCategoryDatetimeru   r7   rH   )r
   	from_dictr   r'   r   r   r#   r(   )rX   r7   r)   r  r,   s        r-   %test_to_json_from_json_columns_dtypesz9TestPandasContainer.test_to_json_from_json_columns_dtypes  s     &&!)7; 0	B A2&A"#3:F"6>N	
 !!!0V"""&,
 	fh/r9   )r   rZ   c                     t        ddgddgddgd      }|j                  d	      }d
}t        j                  t        |      5  t        |d|       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   r   r  r  ru   z)cannot pass both dtype and orient='table'r   r  r
   r'   r   r   r&   r   )rX   rH   rp   r  r+   s        r-   !test_read_json_table_dtype_raisesz5TestPandasContainer.test_read_json_table_dtype_raises  se     aV3*C:FG7+9]]:S1 	;fWE:	; 	; 	;s   AA&)rM   r   r0   r1   c                     t               }t        t        d      |d      }t        j                  |j
                  |j
                         t        j                  |j                  |j                         y )Nz{}Tr   )r
   r   r   r#   assert_index_equalrM   r   )rX   r7   r)   r,   s       r-   %test_read_json_table_empty_axes_dtypez9TestPandasContainer.test_read_json_table_empty_axes_dtype   sO     ;8D>&tL
fllHNN;
fnnh.>.>?r9   c                     t        ddgddggddgddg	      }|j                  d
      }d}t        j                  t        |      5  t        |d
d       d d d        y # 1 sw Y   y xY w)Nr   r   r   ri   r   r   r  r  rt   r  ru   z0cannot pass both convert_axes and orient='table'r   Tr   r  )rX   rp   r  r+   s       r-   (test_read_json_table_convert_axes_raisesz<TestPandasContainer.test_read_json_table_convert_axes_raises	  sm    AA'SzD$<P7+@]]:S1 	AfW4@	A 	A 	As   A  A)zdata, expectedri   r@   r   )r   r[   rC   rn   r   r   rJ   )rK   r[   )rK   rM   c                 b    |j                  dd      }t        j                  |      }||k(  sJ y )Nrz   Fr7   rM   )r'   r(  loadsrX   r[   r)   r,   s       r-   test_index_false_to_json_splitz2TestPandasContainer.test_index_false_to_json_split  s3    @ WE:F#!!!r9   c                     |j                  dd      }t        j                  |      }t        j                  j                  j                  |d      t        |      j                  d      d}||k(  sJ y )Nr  Fr  rL   r0   ru   )schemar[   )r'   r(  r  rV   r'  build_table_schemar
   to_dictrX   r[   r,   r)   s       r-   test_index_false_to_json_tablez2TestPandasContainer.test_index_false_to_json_table6  sm    & WE:F# eejj33D3FdO++9+=

 !!!r9   c                     t        ddgddggddg      }d}t        j                  t        |	      5  |j	                  |d
       d d d        y # 1 sw Y   y xY w)Nr   r   ri   r@   r   r   r   zU'index=False' is only valid when 'orient' is 'split', 'table', 'records', or 'values'r   Fr  r   r   s       r-   test_index_false_error_to_jsonz2TestPandasContainer.test_index_false_error_to_jsonS  s`    
 AA'#s<. 	 ]]:S1 	3JJfEJ2	3 	3 	3   AAr0   c                     t        ddgddggddg      }d}t        j                  t        |	      5  |j	                  |d
       d d d        y # 1 sw Y   y xY w)Nr   r   ri   r@   r   r   r   zS'index=True' is only valid when 'orient' is 'split', 'table', 'index', or 'columns'r   Tr  r   r   s       r-   test_index_true_error_to_jsonz1TestPandasContainer.test_index_true_error_to_jsona  s`    
 AA'#s<- 	 ]]:S1 	2JJfDJ1	2 	2 	2r  r  c                     t        ddgddgd      }|j                  ||      }t        t        |      |      }t	        j
                  ||       y )Nr   r   r   ri   r  r  ru   r  )rX   r7   rM   r)   r  r,   s         r-   "test_index_false_from_json_to_jsonz6TestPandasContainer.test_index_false_from_json_to_jsono  sQ    
 Aq6A78!!u!=8F+F;
fh/r9   c                     t        t        d      dd      }t        dgd      }t        dg|	      }t	        j
                  ||       y )
Nz{"2019-01-01T11:00:00.000Z":88}r  rM   r  z2019-01-01 11:00:00zM8[ns, UTC]rG   X   rL   )r   r   r   r   r#   r  )rX   r,   exp_dtir)   s       r-   test_read_timezone_informationz2TestPandasContainer.test_read_timezone_informationy  sI    67Xg
  !6 7}M2$g.
vx0r9   r
  )zs3://example-fsspec/zgcs://another-fsspec/file.jsonzhttps://example-site.com/datazsome-protocol://data.txtc                 |    t        t        d| d            }t        d|gi      }t        j                  ||       y )Nz{"url":{"0":"rr  r
  rq  )rX   r
  r,   r)   s       r-   test_read_json_with_url_valuez1TestPandasContainer.test_read_json_with_url_value  s<     8ocU%$@ABecU^,
fh/r9   compression)r  z.gzz.bz2z.tarc                     d d| }t        j                  t        d| d      5  t        |       d d d        y # 1 sw Y   y xY w)N  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz.jsonzFile z does not existr   )r   r   FileNotFoundErrorr   )rX   r  long_json_paths      r-   'test_read_json_with_very_long_file_pathz;TestPandasContainer.test_read_json_with_very_long_file_path  sN     '<u[M:]]u^,<O%L
 	&
 n%	& 	& 	&s	   <Azdate_format,key)r  i \&)r  
P1DT0H0M0Sc                     t        dggt        j                  d      g      }d| d}|j                  |      }||k(  sJ y )Nr   1Dr   r|  z
":{"0":1}}r  )r
   rV   r"  r'   )rX   r  keyrp   r)   r,   s         r-   test_timedelta_as_labelz+TestPandasContainer.test_timedelta_as_label  sL     ur||D'9&:;]+4!!!r9   zorient,expected)rM   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}r  z,Produces JSON but not in a consistent manner)marksc                 Z    t        dggdgdg      }|j                  |      }||k(  sJ y )Nr   r  )rZ   rs   rt   ru   r   rX   r7   r)   rp   r,   s        r-   test_tuple_labelsz%TestPandasContainer.test_tuple_labels  s8    0 uZL:,G6*!!!r9   indent)r   r   ri   c                     t        ddgddggddg      }|j                  |      }d	|z  }d
| d| | d| | d| d| d| | d| | d| d}||k(  sJ y )NrC   rA   rB   r  r   r   r   r   z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
}r   )rX   r  rp   r,   spacesr)   s         r-   test_to_json_indentz'TestPandasContainer.test_to_json_indent  s     7#sL6*v 	   	 	   		 !!!r9   z]Adjust expected when infer_string is default, no bug here, just a complicated parametrization))rz   z{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r0   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])rM   zn{
    "0":{
        "a":"foo",
        "b":"bar"
    },
    "1":{
        "a":"baz",
        "b":"qux"
    }
})r   zn{
    "a":{
        "0":"foo",
        "1":"baz"
    },
    "b":{
        "0":"bar",
        "1":"qux"
    }
})r1   zV[
    [
        "foo",
        "bar"
    ],
    [
        "baz",
        "qux"
    ]
])r  aa  {
    "schema":{
        "fields":[
            {
                "name":"index",
                "type":"integer"
            },
            {
                "name":"a",
                "type":"string"
            },
            {
                "name":"b",
                "type":"string"
            }
        ],
        "primaryKey":[
            "index"
        ],
        "pandas_version":"1.4.0"
    },
    "data":[
        {
            "index":0,
            "a":"foo",
            "b":"bar"
        },
        {
            "index":1,
            "a":"baz",
            "b":"qux"
        }
    ]
}c                 b    t        ddgddggddg      }|j                  |d	      }||k(  sJ y )
NrC   rA   rB   r  r   r   r   ri   )r7   r  r   r  s        r-   test_json_indent_all_orientsz0TestPandasContainer.test_json_indent_all_orients  sB    x 7#sL6!4!!!r9   c                     t        j                  t        d      5  t               j	                  d       d d d        y # 1 sw Y   y xY w)Nzmust be a nonnegative integerr   r  )r   r   r&   r
   r'   rj  s    r-    test_json_negative_indent_raisesz4TestPandasContainer.test_json_negative_indent_raisesY  s9    ]]:-LM 	+Kr*	+ 	+ 	+s   A  A	c           	          t        d      }t        |      }t        dd dt        j                  dt        j                   dg      }t        j                  ||       y )Nz?["a", NaN, "NaN", Infinity, "Infinity", -Infinity, "-Infinity"]r   NaNInfinityz	-Infinity)r   r   r
   rP   r   r#   r(   r  s       r-   test_emca_262_nan_inf_supportz1TestPandasContainer.test_emca_262_nan_inf_support]  sR    M
 4$rvvzBFF7KH
 	fh/r9   c                     t        j                  ddiddig      }t        dddgi      }t        t	        |            }t        j                  ||       y )Ncol31900441201190696999Text)r(  dumpsr
   r   r   r#   r(   )rX   encoded_jsonr)   r,   s       r-   test_frame_int_overflowz+TestPandasContainer.test_frame_int_overflowh  sS    zzE+A#BUFO"TUe&<f%EFG8L12
fh/r9   zdataframe,expectedr  r|   r}   zU{"(0, 'x')":1,"(0, 'y')":"a","(1, 'x')":2,"(1, 'y')":"b","(2, 'x')":3,"(2, 'y')":"c"}c                 Z    |j                  d      }|j                  d      }||k(  sJ y )NTfuture_stackrM   ru   )stackr'   )rX   	dataframer)   r  r,   s        r-   test_json_multiindexz(TestPandasContainer.test_json_multiindexo  s2     d3w/!!!r9   c                    |j                   d}}t        g dg dd      }|j                  d| d| |       d}	 |d	 |j                  j	                         D        v ry t        j                  d
       |d
z  }|dkD  sJ d       K)Nr  r   )r   ri   r   r   zs3:///)rt  r@   c              3   4   K   | ]  }|j                     y wrc  )r  ).0r:  s     r-   	<genexpr>z1TestPandasContainer.test_to_s3.<locals>.<genexpr>  s     Q3swwQs   r  r   z,Timed out waiting for file to appear on moto)rK   r
   r'   objectsalltimesleep)rX   s3_public_bucketrv  mock_bucket_nametarget_filerp   timeouts          r-   
test_to_s3zTestPandasContainer.test_to_s3~  s     )9(=(={+YY78


U+,Ak];T
RQ2B2J2J2N2N2PQQJJsOsNGQ;N NN; r9   c                     t        |t              r1t        j                  j	                  d      }|j                  |       t        |gg      j                         }|dk(  sJ y )Nznot implementedr   z{"0":{"0":null}})r6  r   r   r   r   r   r
   r'   )rX   nulls_fixturer   r   r,   s        r-   test_json_pandas_nullsz*TestPandasContainer.test_json_pandas_nulls  sY    mW-;;$$,=$>D%]O,-557++++r9   c                 v    t        t        d      d      }t        g d      }t        j                  ||       y )Nz[true, true, false]r  r  )TTF)r   r   r   r#   r  r}  s      r-   test_readjson_bool_seriesz-TestPandasContainer.test_readjson_bool_series  s/    8$9:I-.
vx0r9   c                     t        dt        dd      ddg      j                  d      }|j                         }d}||k(  sJ y )	NTz
2017-01-20z
2017-01-23rC   rA   rt   r  a  {"(Timestamp('2017-01-20 00:00:00'), 'foo')":true,"(Timestamp('2017-01-20 00:00:00'), 'bar')":true,"(Timestamp('2017-01-21 00:00:00'), 'foo')":true,"(Timestamp('2017-01-21 00:00:00'), 'bar')":true,"(Timestamp('2017-01-22 00:00:00'), 'foo')":true,"(Timestamp('2017-01-22 00:00:00'), 'bar')":true,"(Timestamp('2017-01-23 00:00:00'), 'foo')":true,"(Timestamp('2017-01-23 00:00:00'), 'bar')":true})r
   r   r  r'   r  s       r-   test_to_json_multiindex_escapez2TestPandasContainer.test_to_json_multiindex_escape  sY    \<8EN
 %T%
"	 	
 B 	 !!!r9   c                      G d d      }t         |dddd      g      }t        j                  |j                               ddddd	ik(  sJ y )
Nc                       e Zd ZddZd Zy)GTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectNc                 <    || _         || _        || _        || _        y rc  r   r   _crs   )rX   r   r   r!  rs   s        r-   rh  zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__  s    r9   c                      y)Nr@   r   rj  s    r-   r   zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.e  s    r9   rl  )rm  rn  ro  rh  r   r   r9   r-   _TestObjectr    s    r9   r#  r   r   r   ri   r   0)r   r   rs   )r   r(  r  r'   )rX   r#  r  s      r-   test_to_json_series_of_objectsz2TestPandasContainer.test_to_json_series_of_objects  sP    	 	 qA!q9:;zz&..*+1115M/NNNNr9   zdata,expectedy             @y              ?y      "@      )r   r   r   zW{"0":{"imag":8.0,"real":-6.0},"1":{"imag":1.0,"real":0.0},"2":{"imag":-5.0,"real":9.0}}yHz"Q?y@p=
ף"@yQ@(\ſz]{"0":{"imag":0.66,"real":-9.39},"1":{"imag":9.32,"real":3.95},"2":{"imag":-0.17,"real":4.03}}y             @y              y      @      y              $z{"0":{"0":{"imag":3.0,"real":-2.0},"1":{"imag":-3.0,"real":4.0}},"1":{"0":{"imag":0.0,"real":-1.0},"1":{"imag":-10.0,"real":0.0}}}yQѿ(\?yHzG(\ؿy=
ףp=?(\տy(\迚z{"0":{"0":{"imag":0.34,"real":-0.28},"1":{"imag":-0.34,"real":0.41}},"1":{"0":{"imag":-0.39,"real":-1.08},"1":{"imag":-1.35,"real":-0.78}}}c                 2    |j                         }||k(  sJ y rc  r   r  s       r-   test_complex_data_tojsonz,TestPandasContainer.test_complex_data_tojson  s    F !!!r9   c                 Z    d}t        dddgi      }|j                  d      }||k(  sJ y )NzY{"columns":["col1"],"index":[0,1],"data":[[13342205958987758245],[12388075603347835679]]}col1l   :!c&HI l   v8$Z_
 )r[   rz   ru   r   )rX   r)   rp   r,   s       r-   test_json_uint64z$TestPandasContainer.test_json_uint64  sC    F 	 V&:<P%QRS7+!!!r9   )rz   r0   r1   rM   r   c                 $   t        j                  d      }t        t        dt        j
                  dgd      t        g dd      t        dt        j
                  dgd	      t        g d
d	      g dg dg dg dd      }|r9t        |j                  g d            }t        |j                  g d            }n|dk(  rft        t	        j                  g dt        j                              }t        t	        j                  ddt        gt        j                              }n|dk(  rNt        j                  d      }ddlm}	  |	|j                  g d            } |	|j                  g d            }n8t        |j                  g d            }t        |j                  g d            }|j                  |      }
t        j                   d|      5  t#        t%        |
      ||      }d d d        t        t        dt        j
                  dgd      t        g dd      t        dt        j
                  dgd	      t        g d
d	      t        ddt        gd      t        g dd      ||d      }|dk(  rDddlm}	 t        |j&                  D ci c]  }| |	|j                  ||   d            ! c}      }|dk(  rt)        t+        d            |_        t-        j.                  |       y # 1 sw Y   xY wc c}w )Npyarrowr   r   Int64rG   r   r   r   Float64)r   r   r   )TFNr  r  r  )r   r   rZ   rs   r   r  gr=  pythonr   r   r   ArrowExtensionArrayru   mode.string_storage)dtype_backendr7   TFbooleanfrom_pandasr1   r[  )r   importorskipr
   r   rP   r   r   arrayr   object_r	   pandas.arraysr2  r   r'   rV   option_contextr   r   r   rO   r5   r#   r(   )rX   string_storager4  r7   r   parp   string_arraystring_array_nar2  outr,   r)   r  s                 r-   test_read_json_dtype_backendz0TestPandasContainer.test_read_json_dtype_backend  s~      +QN':IW5S"&&#.i@O9=(($%	
 9"((?:STL<RXXFV=WXOx'&rxxrzz'RSL)"((Cb>*TUOi'$$Y/B9.rxx/HIL1"((;K2LMO ,BHH_,EFL.rxx8H/IJOjjj'4nE 	]6F	
 QN':IW5S"&&#.i@O9=T5"-Y?/yA!$	
 I%9   (// ,RXXhsmQUX-VWWH X#E!H~H
fh/?	 	,s   L  $L L
)rz   r0   rM   c                    t        j                  d      }t        dt        j                  dgd      }|j                  |      }t        j                  d|      5  t        t        |      ||d	      }d d d        t        dt        j                  dgd      }|dk(  r(d
dl
m}	 t         |	|j                  |d                  }t        j                  |       y # 1 sw Y   kxY w)Nr,  r   r   r-  rG   ru   r3  r  )r4  r7   r  r   r1  Tr6  )r   r8  r   rP   r   r'   rV   r<  r   r   r;  r2  r9  r#   r  )
rX   r=  r4  r7   r>  rf   rA  r,   r)   r2  s
             r-   test_read_json_nullable_seriesz2TestPandasContainer.test_read_json_nullable_series7  s       +a^73kkk(4nE 	]6xF	
 1bffa.8I%91"((8QU(2VWXH
vx0	 	s   CC(c                     d}t        j                  t        |      5  t        dd       d d d        y # 1 sw Y   y xY w)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   r
  numpy)r4  )r   r   r&   r   )rX   r+   s     r-   test_invalid_dtype_backendz.TestPandasContainer.test_invalid_dtype_backendL  s;    % 	 ]]:S1 	5fG4	5 	5 	5s   5>)rm  rn  ro  r   fixturer]   rg   rq   ry   r   parametrizer~   r   r   r   r   r   r   r   rP   rF   r   rd   intr   r   r   r   r   r   AssertionErrorr   r1  r   r   r   r   r   skipifr   r   r   r  r  r  r!  r:  r]  rz  r~  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r%  r  r  r  r  r  r  r  r  r  r  r  network
single_cpurV   DatetimeTZDtyper  r  r   r%  r"  r   r(  r,  r/  rA  rC  rI  rM  rY  r_  rg  ri  r   rm  ro  rr  r$  skip_if_not_us_localerw  r  r  sysmaxsizer  r  r  r  rG  r   ro   r  r  r  r  r   r  r  r  r  r
   rename_axisr  r  r  r  r  r  r  r  r  paramr  r  r  r  r  r  r  r  r  r  r  r%  r'  r*  rB  rD  rG  r   r9   r-   r;   r;   `   s   ^^I I ^^	 	 ^^	 	
> [[X'EF> G> [[X';<& =& [[X':;[[3Z#s$3Z#s$X3x 
#S)Ij,A3+GH		
0 <0( [[X'FG& H&N [[Wuen5[[^dE];> < 6> [[Wubhh&78[[^dE];> < 9> [[WtRZZd&CD[[^dE];> < E>< [[^dE];> <>* [[^dE];0 <0 [[^dE];> <>  [[^dE];> <>& [[J   [[fu~.fu~.fu~.	
*	* [[D; V
 
/	
!D5E!D5 [[WtUm4[[^dE];+ < 5+( [[WtUm40 50 [[URVVbffW$56[[WtUm4+ 5 7+ [[D)OP[[&	

B
 QB
)B"

+<M<`
D$
L"7$P1 [[Wudm4
1 5
1	1
1 [[Wrzz3&78	1 9	1(B
1 [[6<.0@ABFL>*+	
11*
*
* 
#+0 [[]We,<=[[[4-8[[Z(--9J9JI)VW" X 9 >"( [[	
	0	0 [[	
	0	0; [[	
	1	1; [[V%<=* >*$ [[V%67$
 8$
L*.' [[[[[[-2--78*+-2--78	
,  ,
(-
H [[[4-8[[]UG,<=[[_r||Y.GH" I > 9"( [[[4-8[[_r||Y.GH" I 9"H
*L+2 (  [[,-+=01	
666 [[-q9,aLI11=	
FF&F0 [[	0  	040" [[Xa3;;?9K'LM
  N
  [[Xe'<=	 >	0K, [[EiX[[1,.9#+1VVS$%2663d3
	
 [[Wz6&:;
G < Y 
G) [[$Ac
S#Jc
T4LQ [[Y#sc3Z$(NO0 P00 [[13<UV[[X'OP0 Q W0< [[Wt3S-A&BC; D; [[X'PQ@ R@A [[ Aq6Aq6*S#J? #J!Q!Q0@A
 Aq6Aq6*S#J?KKER #J!Q!Q0@A
 VaV$sCj#scSVZ@X !#J!Q!Q0@A	 IC(3	*JKys+77>i0
 1vCc
S#J/GHq!f-)	
8"98" [[AA'#s<AA'#s<HHOVaV$sCj#scSVZ@X IC(IC(44U;QFc3Z#s,DE	
"" [[X';<3 =3 [[X	8'<=2 >2 [[X'9:[[WtUm40 5 ;01 [[	
00 [[#&	& [[/1FG"" [[<>FLLkk''I (  FLLkk''I ( 	
,"-," [[Xy1" 2"& [["$-  
 [[q	
tj"ktt"+	00 [[ 	@AD	
	"	"
 [[O O,1"(O [[ 7v&9:0 =\lKL2 GW-/ABC2 #]3lM5RS4	)	
 B"C B"
" [[DD0D0L [[X'DE1 F1(5r9   r;   c                      t        t        d            } | j                         }t        j                  t
        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nr   zThe engine type foor   rC   )enginer   r5   r'   r   r   r&   r   rf   rA  s     r-   test_invalid_enginerY  U  sI    
q
C
++-C	z)>	? %#e$% % %s    AA c                      t        t        d            } | j                         }t        j                  t
        d      5  t        |dd       d d d        y # 1 sw Y   y xY w)Nr   z&currently pyarrow engine only supportsr   r,  F)rV  r    rW  rX  s     r-   test_pyarrow_engine_lines_falser[  ]  sK    
q
C
++-C	z)Q	R 6#iu56 6 6s    AA!c           	         t        j                  d       t        ddgddggddgdd	g
      }|j                         }t	        j
                  dd      5  t        t        |            }d d d        t        ddgddggdt        ddgd      t        dd	gd            }t        j                  |       y # 1 sw Y   OxY w)Nr,  r   r   rZ   rs   zrow 1zrow 2zcol 1zcol 2rt   zfuture.infer_stringTr   rG   r  )r   r8  r
   r'   rV   r<  r   r   r   r#   r(   )r7   rp   rA  r,   r)   s        r-   $test_json_roundtrip_string_inferencer]  e  s    
	"	
sc3Z '(:WgDV
B **,C			0$	7 *8C=)*
sc3Z %Wg&.EFw(0GH	H &(+* *s   B77C c                      t        dg di      } d}t        j                  t        |      5  t	               }| j                  |d       d d d        y # 1 sw Y   y xY w)Nr   r   zuStarting with pandas version 3.0 all arguments of to_json except for the argument 'path_or_buf' will be keyword-only.r   rz   )r
   r#   r$   r%   r   r'   )rp   r+   r  s      r-   test_json_pos_args_deprecationr_  v  sW    	C#	$B	8  
	#	#M	= !i


3 ! ! !s   AAr,  c                      t        t        dt        gd      t        dt        gd      d      } | j                  dd	      }d
}||k(  sJ y )Nr   zint64[pyarrow]rG   r   r-  r  r0   Tr  z"{"a":1,"b":2}
{"a":null,"b":null}
)r
   r   r	   r'   )rp   r,   r)   s      r-   test_to_json_ea_nullra    s[     
B'78Bw/	

B ZZyZ5FH Xr9   c                      d} t        t        |       d      j                  }t        d      }t	        j
                  ||d       y )Nz#
{"a": 1, "b": 2}
{"a": 3, "b": 4}
Tr   r   )exact)r   r   rM   r   r#   r  )r[   r,   r)   s      r-   test_read_json_lines_rangeindexrd    s<    D x~T288F!}H&($7r9   )5r  r   decimalr   r'  r   r   r(  r/  rQ  r  rF  rP   r   pandas._configr   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsr$  pandasrV   r	   r
   r   r   r   r   r   r   r   pandas._testing_testingr#   pandas.core.arraysr   r   pandas.core.arrays.string_arrowr   pandas.io.jsonr   r.   r8   r;   rY  r[  r]  r_  
skip_if_nora  rd  r   r9   r-   <module>rr     s        	 
    5  ) ) 
 
 
  K &*0Z,r5 r5j?%6,"	! y 8r9   