
    [6g1                    n   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j2        d          d             Z3d Z4dS )    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                     t          ddgddggddg          } d}d}t          j        t          |          5  	 t	          |d	
           n# t
          $ r Y nw xY wd d d            n# 1 swxY w Y   t          j        t          |          5  t	          |                                 d	
           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          dd
          }t          j        ||            d d d            n# 1 swxY w Y   t          j        t          |          5  	 t	          dd	
          }n# t
          $ r Y nw xY wd d d            n# 1 swxY w Y   t          j        t          |          5  	 t	          dd	
          }n# t
          $ r Y nw xY wt          j        ||            d d d            d S # 1 swxY w Y   d S )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       _/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/pandas/tests/io/json/test_pandas.pytest_literal_json_deprecationr.   +   sv   1a&1a&)C:>>>HE	:  
	#M	=	=	=  	e5))))) 	 	 	D	               
	#M	=	=	= 3 3(""$$E22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
	#M	=	=	= 0 0@MMM
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
	#M	=	=	=  	O  FF  	 	 	D	               
	#M	=	=	= 0 0	DERRRFF 	 	 	D	
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   A)AA)
AA)AA))A-0A-$B??CC%'DDD>E. EE.
EE.EE..E25E2GF('G(
F52G4F55GG!Gc                     |dv r|                     d          }|dk    r&t          t          |j                            |_        t	          j        | |           d S )N)recordsvaluesTdropr1   )reset_indexrangelenr   r#   r(   )r,   r)   orients      r-   assert_json_roundtrip_equalr8   X   sc    &&&''T'22 X%5!6!677&(+++++    c                      e Zd Zej        d             Zej        d             Zej        d             Zd Zej	        
                    dg d          d             Zej	        
                    ddd	g          d
             Zej	        
                    dddg          e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	        
                    dg d          d             Zd Zej	        
                    ddeg          ej	        
                    d d!dg          d"                         Zej	        
                    ddej        g          ej	        
                    d d!dg          d#                         Zej	        
                    dd$ej        ed%g          ej	        
                    d d!dg          d&                         Zej	        
                    d d!dg          d'             Zej	        
                    d d!dg          d(             Zej	        
                    d d!dg          d)             Zej	        
                    d d!dg          d*             Zej	                            d+e,          e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	        
                    d2d3d4d5                     d6g          dfd7d8g          d9             Z!ej	        
                    dd!dg          ej	        
                    d d!dg          d:                         Z"ej	        
                    dd!dg          d;             Z#ej	        
                    d<ej$        ej$         g          ej	        
                    dd!dg          d=                         Z%ej	        &                    e' d>?          e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	        
                    ddd$g          dO             Z5dP Z6dQ Z7ej	        
                    dej        eg          dR             Z8dS Z9dT Z:dU Z;ej	        
                    dVd! e<dWgdXY          fd e<dZg          fg          d[             Z=d\ Z>d] Z?d^ Z@d_ ZAd` ZBda ZCej	        
                    dbdcddg          ej	        
                    ded!dg          ej	        
                    dfeDjE        eDjD        eg          dg                                     ZFej	        
                    dhg di          dj             ZGej	        
                    dkg dl          dm             ZHdn ZIej	        
                    dkg dl          do             ZJdp ZKej	        
                    dqg dr          ds             ZLej	        
                    dqg dt          du             ZMdv ZNdw ZOdx ZPej	        jQ        ej	        jR        ej	        
                    dydz eSjT        d{|          gd}dXgd~ eSjT        d{|          gg          d                                     ZUd ZVd ZWd ZXej	        
                    ded!dg          ej	        
                    dbdddcg          ej	        
                    deSjY        eZg          d                                     Z[ej	        
                    ded!dg          ej	        
                    deSjY        eZg          d                         Z\d Z]d Z^d Z_d Z`d Zad Zbd Zcej	        
                    d ed           edd|           ed          g          d             Zdd Zeej	        
                    d efdd           efddd           efdd          g          d             Zgd Zhd Ziej	        jR        ejjk        d                         Zld Zmd Znej	        
                    deojp        dz   eojp        dz    g          d             Zqej	        
                    dddg          d             Zrd Zsd Ztej	                            deu,          ej	        
                    dg dg dg dg dg dg dg dejv        dddgdejv        dddgg	          ej	        
                    ddewg          d                                     Zxd Zyej	        
                    dd$ddgddgddgddgddgg          ej	        
                    d	ddgddgddgg          d                         Zzd Z{ej	                             e|            d?          ej	        
                    dg d          d                         Z}ej	        
                    dd!eedÜg          dĄ             Z~ej	        
                    dg dŢ          dƄ             ZdǄ Ze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˦                              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ЬѦ                              dͦ          dg dϢdҜf e<ddgdddgddggӦ          dddgdҜfg          dԄ             Zej	        
                    d eddgddggddg˦           eddgddggddg˦                              dͦ           eddgddggddgddgddggΦ           e<g dϢdЬѦ           e<g dϢdЬѦ                              dͦ           e<ddgdddgddggӦ          g          dՄ             Zej	        
                    ddd	g          dք             Zej	        
                    dddg          d؄             Zej	        
                    dddg          ej	        
                    dd!dg          dڄ                         Zdۄ Zej	        
                    dg dݢ          dބ             Zej	        
                    dg d          d             Zej	        
                    dddg          d             Zej	        
                    ddd ej        ddej	                            d?                     ej        ddej	                            d?                    g          d             Zej	        
                    dg d          d             Zej	        &                     e|            d?          ej	        
                    dg d          d                         Zd Zd Zd Zej	        
                    d eg dϢg dd          dfg          d             Zej	        jR        d             Zd Zd Zd Zd Ze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	        
                    dg d          d             Zej	        
                    dg d          d             Zd Zd$S (  TestPandasContainerc                 >   d t          t          d                    D             }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 )Nc                 z    i | ]8\  }}|t           j                            |                              d           9S )   )nprandomdefault_rngstandard_normal).0ics      r-   
<dictcomp>z9TestPandasContainer.categorical_frame.<locals>.<dictcomp>c   sL     
 
 
1 ry$$Q''77;;
 
 
r9   ABCDbah   barbazfoo   Er>   int64dtypesortnameindex)	enumeratelistreversedr?   aranger
   pdCategoricalIndex)selfdatacats      r-   categorical_framez%TestPandasContainer.categorical_framea   s    
 
!$v,,//
 
 
 gkUGaK'5'A+5"D#''S	y7333VR%83%G%G%GHHHHr9   c                     t          dt          j        dt          j                  z  t	          dd          d          }|j                            d           |_        |S )Ng?
   rP   
2020-01-01periodsts)rV   rT   )r   r?   rZ   float64r   rV   
_with_freq)r]   sers     r-   datetime_seriesz#TestPandasContainer.datetime_seriesl   sb     ")Bbj1111\2666
 
 

 I((..	
r9   c           	      *   t          t          j                            d                              d          t          t          d          t                    t          ddd          	          }|j	        
                    d           |_	        |S )
Nr   )r>      rG   rP   
2000-01-01r>   Bre   freqr   rV   )r
   r?   r@   rA   rB   r   rX   objectr   rV   rh   )r]   dfs     r-   datetime_framez"TestPandasContainer.datetime_framex   s     I!!!$$44W==$v,,f555\2C@@@
 
 

 8&&t,,	r9   c                     t          ddgddggddgddg	          }t          |                    |
                    }t          ||
          }|                                }t          |||           d S )Nr   r   rE   dz	index " 1z	index / 2za \ bzy / zrV   r   r7   r
   r   r'   r   copyr8   r]   r7   rs   r^   r,   r)   s         r-    test_frame_double_encoded_labelsz4TestPandasContainer.test_frame_double_encoded_labels   s    3Z#s$,w'
 
 
 

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

&
11224///7799#FHf=====r9   rV   r   c                     t          ddgddggddgddg          }d	| d
}t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   rE   rv   r   r   r   rw   z+DataFrame index must be unique for orient=''r   rx   r
   pytestraisesr&   r'   r]   r7   rs   r+   s       r-   "test_frame_non_unique_index_raisesz6TestPandasContainer.test_frame_non_unique_index_raises   s    c
S#J/1vSzRRREFEEE]:S111 	& 	&JJfJ%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   A""A&)A&r}   r1   r^   r   r   rE   rv         ?      @g      @g      @r      2013010120130102c                    t          |ddgddg          }t          t          |                    |                    |dg          }|dk    rot          |          }|j        d d df         j        d	k    rE|                    d|j        d d df                             t          j	                  d
z             n|dk    r|}ddg|_
        t          j        ||           d S )Nr   r   r   rw   rx   )r7   convert_datesr1   r   datetime64[ns]@B r}   zx.1)r
   r   r   r'   ilocrQ   isetitemastyper?   rO   r   r#   r(   )r]   r7   r^   rs   r,   r)   s         r-   test_frame_non_unique_columnsz1TestPandasContainer.test_frame_non_unique_columns   s     tAq6C:>>>RZZvZ..//se
 
 
 X H}QQQT"(,<<<
 !!!X]111a4%8%?%?%I%IW%TUUUwH #U|H
fh/////r9   )rV   r   r0   c                     t          ddgddggddgddg          }d	| d
}t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   rE   rv   r   r   r   rw   z-DataFrame columns must be unique for orient='r   r   rx   r   r   s       r-   $test_frame_non_unique_columns_raisesz8TestPandasContainer.test_frame_non_unique_columns_raises   s    c
S#J/1vSzRRRGfGGG]:S111 	& 	&JJfJ%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r   c                 b    |                                 |                     d          k    sJ d S )Nr   rx   r'   )r]   float_frames     r-   test_frame_default_orientz-TestPandasContainer.test_frame_default_orient   s6    ""$$(;(;9(;(M(MMMMMMMr9   rQ   Fconvert_axesTc                     t          |                    |                    }t          ||||          }|}t          |||           d S Nrx   r7   r   rQ   r   r'   r   r8   )r]   r7   r   rQ   r   r^   r,   r)   s           r-   test_roundtrip_simplez)TestPandasContainer.test_roundtrip_simple   sV     ++6+::;;4\QVWWW#FHf=====r9   c                     t          |                    |                    }t          ||||          }|}t          |||           d S r   r   )r]   r7   r   rQ   	int_framer^   r,   r)   s           r-   test_roundtrip_intframez+TestPandasContainer.test_roundtrip_intframe   sV     	)))88994\QVWWW#FHf=====r9   NU3c                    t          t          j        d          d t          d          D             d t          d          D             |          }t	          |                    |                    }t          ||||          }|                                }|s|                    t          j	                  }|rW|d	v rS|j
                            t          j	                  |_
        |j                            t          j	                  |_        nc|d
k    r,|r*|j
                            t          j	                  |_
        n1|r/|dk    r)|j
                            t          j	                  |_
        t          |||           d S )N)   rl   c                 ,    g | ]}t          |          S  strrC   rD   s     r-   
<listcomp>z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>   s    ...SVV...r9   rl   c                 ,    g | ]}t          |          S r   r   r   s     r-   r   z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>   s    ...a3q66...r9   r   )r   rV   rQ   rx   r   rw   r0   r}   )r
   r?   zerosr5   r   r'   r   rz   r   rO   r   rV   r8   )r]   r7   r   rQ   rs   r^   r,   r)   s           r-   test_roundtrip_str_axesz+TestPandasContainer.test_roundtrip_str_axes   sr    HX..U1XX.....5::...	
 
 
 

&
11224\QVWWW7799 	1rx00H  	AV';;;'/66rx@@H%^2228<<HNNy  \ '/66rx@@H 	Af//'/66rx@@H#FHf=====r9   c                    |dv r7|                     t          j                            d| d                     t	          |                    |                    }t          |||          }|                                }|j        	                    |st          nd          |_        d |j        _        t          |||           d S )Nrw   z.Can't have duplicate index values for orient 'z')reasonrx   r7   r   string[pyarrow_numpy])applymarkerr   markxfailr   r'   r   rz   rV   r   r   rT   r8   )	r]   requestr7   r`   r   using_infer_stringr^   r,   r)   s	            r-   test_roundtrip_categoricalz.TestPandasContainer.test_roundtrip_categorical   s    
 )))!!VFVVV "     )111@@AA4\JJJ$))++!..)FCC/F
 
 ##FHf=====r9   c                 r   t                      }t          |                    |                    }t          |||          }|dk    r1t	          g |rt
          nt                    }t          ||          }n'|dv rt                      }n|                                }t          j	        ||           d S )Nrx   r   r}   rP   rw   )
r
   r   r'   r   r   floatrr   rz   r#   r(   )r]   r7   r   empty_framer^   r,   idxr)   s           r-   test_roundtrip_emptyz(TestPandasContainer.test_roundtrip_empty  s    kk++6+::;;4\JJJWL#D55fFFFC sC888HH+++ {{HH"''))H
fh/////r9   c                 Z   t          |                    |                    }t          |||          }|                                }|sN|j                            t          j                  dz  }|dk    r|                    t                    }||_        t          |||           d S )Nrx   r   r   r}   )r   r'   r   rz   rV   viewr?   rO   r   r   r8   )r]   r7   r   rt   r^   r,   r)   r   s           r-   test_roundtrip_timestampz,TestPandasContainer.test_roundtrip_timestamp   s     ..f.==>>4\JJJ!&&(( 	!.%%bh//7:C  jjoo HN#FHf=====r9   c                    t          g d          }g dg dg dg dd}t          ||          }t          |                    |                    }t	          |||	          }|                                } |j        di |                    d
                              t          j
                  }t          |||           d S )N)r   r   rE   rv   e)              ?       @      @      @)r   r   r   r   r   )foo1foo2foo3foo4foo5)TFTFTArn   CD)r^   rV   rx   r   numberr   )r   r
   r   r'   r   rz   assignselect_dtypesr   r?   rO   r8   )	r]   r7   r   rV   r1   rs   r^   r,   r)   s	            r-   test_roundtrip_mixedz(TestPandasContainer.test_roundtrip_mixed1  s    ///00******999111	
 
 F%000

&
11224\JJJ7799"8?WWX%;%;H%E%E%L%LRX%V%VW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                            |                    }t	          |                    d                    }t          |d          }t          j        ||           d S )Nr   r   r   rl   r   r}   rx   )	r
   r[   
MultiIndexfrom_arraysr   r'   r   r#   r(   )r]   r   rs   r^   r,   s        r-   test_roundtrip_multiindexz-TestPandasContainer.test_roundtrip_multiindexE  s     VaVM--g66
 
 
 

'
2233400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 columnsr}   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyr}   c                     t          j        t          |          5  t          t	          |          |           d d d            d S # 1 swxY w Y   d S )Nr   rx   )r   r   r&   r   r   )r]   r^   r+   r7   s       r-   $test_frame_from_json_bad_data_raisesz8TestPandasContainer.test_frame_from_json_bad_data_raisesZ  s    F ]:S111 	5 	5htnnV4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AAAc                    t          ddgg dg          }t          t          |                    |                    |||          }t	          j        |j        d                   sJ t          ddgg d	g          }t          t          |                    |                    |||          }t	          j        |j        d                   sJ d S )
Nr   r   rl   rI      rx   r   r   r   12)456)r
   r   r   r'   r?   isnanr   )r]   r7   r   rQ   num_dfr,   obj_dfs          r-   !test_frame_from_json_missing_dataz5TestPandasContainer.test_frame_from_json_missing_data  s     QFIII.//V^^6^2233%	
 
 
 xD)*****S#J899V^^6^2233%	
 
 
 xD)*******r9   c                     t          t          d          |          }t          t          j        g          }t          j        ||           d S )Nz[null]rP   )r   r   r
   r?   nanr#   r(   )r]   rQ   r,   r)   s       r-   (test_frame_read_json_dtype_missing_valuez<TestPandasContainer.test_frame_read_json_dtype_missing_value  sH     8H--U;;;bfX&&
fh/////r9   infc                     t          ddgg dg          }||j        d<   t          |                                          }t	          ||          }t          j        |j        d                   sJ d S )Nr   r   r   r   rP   )r
   locr   r'   r   r?   r   r   )r]   r   rQ   rs   r^   r,   s         r-   test_frame_infinityz'TestPandasContainer.test_frame_infinity  ss    
 A			*++t

%%4u---x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?rM   r   c                 n    t          d|ig          }|                    |          }|d| dk    sJ d S )Na_float)double_precisionz{"a_float":{"0":}}r
   r'   )r]   value	precisionexpected_valrs   encodeds         r-   "test_frame_to_json_float_precisionz6TestPandasContainer.test_frame_to_json_float_precision  sO     E*+,,**i*88A|AAAAAAAAAr9   c                     t          g d          }d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S Nr   r   r   z+Invalid value 'garbage' for option 'orient'r   garbagerx   r   )r]   rs   r+   s      r-   test_frame_to_json_exceptz-TestPandasContainer.test_frame_to_json_except  s    yyy!!;]:S111 	) 	)JJiJ(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)   AAAc                     t          ddg          }|j        rJ t          |                                          }t	          |t          |j                            }t          j        ||d           d S )Njimjoer   rP   Fcheck_index_type)	r
   _is_mixed_typer   r'   r   dictdtypesr#   r(   )r]   rs   r^   r,   s       r-   test_frame_emptyz$TestPandasContainer.test_frame_empty  sr    u~...$$$$

%%4tBI777
fb5AAAAAAr9   c                 l    t          dg ig           }|                    d          }d}||k    sJ d S )NtestrU   r   rx   z{"test":{}}r   r]   rs   r,   r)   s       r-   test_frame_empty_to_jsonz,TestPandasContainer.test_frame_empty_to_json  sG    |2...9-- !!!!!!r9   c                 *   t          ddg          }|d                             d          |d<   |j        sJ |                                }t	          j        t          t          |          t          |j	                            |d           d S )Nr	  r
  r   i8rP   Fr  )
r
   r   r  r'   r#   r(   r   r   r  r  )r]   rs   r^   s      r-   test_frame_empty_mixedtypez.TestPandasContainer.test_frame_empty_mixedtype  s    u~...uI$$T**5	    zz||
htnnDOO<<<"	
 	
 	
 	
 	
 	
r9   c                    g dg dg dg dg}t          |t          d          g d          }|j        sJ |                                }dD ]L}t	          |                    |	                    }t          ||d
          }t          j        ||           Mt          t          |                    |_        t	          |                    d	                    }t          |dd
          }t          j        ||           t          |j        d                   |_        t	          |                    d	                    }t          |dd
          }t          j        ||           d S )N)rb   r   rL   皙?g{Gz?)   r   rJ   g?g{Gz?)r>   r   rK   g333333?gQ?)(   rl   quxg?g{Gz?abcd)1st2nd3rd4th5thrw   r}   rV   r   rx   Fr   r0   r   r1   )r
   rX   r  rz   r   r'   r   r#   r(   r   r6   rV   shaper   )r]   valsrs   rightr7   inplefts          r-   test_frame_mixedtype_orientz/TestPandasContainer.test_frame_mixedtype_orient  s}   %%%%%%%%%%%%	
 V.Q.Q.Q
 
 
     		3 	/ 	/F2::V:4455CSeDDDD!$.... R))rzzz3344YUCCC
dE***"28A;//rzzz2233XEBB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                              d          |d<   t          d          |j        d|j        	                    d          f<   |d         |d<   t          j        |j        d|j        	                    d          f<    |ddd          }t          j                            |d          }t          |          }t!          j        ||           |                    dgd          }t          j                            |d          }t          |          }	t!          j        ||	d           d S )Nz
2000-01-03z
2000-01-07rp   )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   rq   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   r?   asarrayr
   r   as_unitr   r   get_locr[   NaTospathjoinr   r#   r(   r3   )
r]   datapathdtirs   dirpathv12_jsondf_unserdf_isov12_iso_jsondf_unser_isos
             r-   test_v12_compatz#TestPandasContainer.test_v12_compat  s   |44BJsOO$777AAACCC???BBBAAA )((

 

 

 566>>tDD6
1::1F1F2:%%f---.F:57V2:%%j1112(4007<<)<==X&&
b(+++*A..w||G-DEE ..
fleLLLLLLr9   c           	         t          ddd          }t          t          |          d           }t          g dg dg dg d	g d
g dd|          }|j                            |st          j        nd          |_        t          |	                    d                    }t          |d          }t          j        ||dddd           d S )N20000101rb   hro   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_2rU   r   r}   rx   T)r  r2  	by_blockscheck_exact)r   r   rX   r
   r   r   r?   str_r   r'   r   r#   r(   )r]   r   rV   df_mixedr^   df_roundtrips         r-   test_blocks_compat_GH9037z-TestPandasContainer.test_blocks_compat_GH9037  sH   :r<<<d5kk555            {I IT WL
 L
 L
^ $+22-JBGG3J
 
 (((8899 g666
!"	
 	
 	
 	
 	
 	
r9   c                     G d d          }d} ||          }t          d|j        gi          }|                                d| dk    sJ t          d|gi          }d}t          j        t
          |          5  |                                 d d d            n# 1 swxY w Y   t          |gd	gd
ddg          }t          j        t
          |          5  |                                 d d d            n# 1 swxY w Y   |                    t                    }d| d}	||	k    sJ |                    t                    d| dk    sJ d S )Nc                   "    e Zd ZddZdefdZdS )FTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingreturnNc                 R    || _         t                              |          | _        d S N)hexedbytesfromhexbinary)r]   rl  s     r-   __init__zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__  s     "
#mmE22r9   c                     | j         S rk  )rl  r]   s    r-   __str__zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__  s
    z!r9   ri  N)__name__
__module____qualname__rp  r   rs  r   r9   r-   BinaryThingrh  ~  sC        3 3 3 3" " " " " " "r9   rx  574b4454ba8c5eb4f98a8f45r   z{"A":{"0":""}}z6Unsupported UTF-8 sequence length when encoding stringr   r   r   rn   rn   r   default_handlerz"},"B":{"0":1}})r
   rl  r'   r   r   OverflowErrorr   )
r]   rx  rl  binthingdf_printabledf_nonprintabler+   rc  r,   r)   s
             r-   test_frame_nonprintable_bytesz1TestPandasContainer.test_frame_nonprintable_bytes{  s2   	" 	" 	" 	" 	" 	" 	" 	" +;u%% !#'7!899##%%)E)E)E)EEEEE $S8*$566F]=444 	& 	&##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& H:QC883*MMM]=444 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !(((==/5///!!!!S119u999: : : : : :s$   ?B  B$'B$C??DDc                 |    t          ddz  dgddgi                                          }dddz   d}||k    sJ d S )NrJ   i r   rL   i9  {"z":{"0":1},"foo":{"0":1337}}r   r]   r,   r)   s      r-   test_label_overflowz'TestPandasContainer.test_label_overflow  sW    EFNQC?@@HHJJIIII!!!!!!r9   c           
         t          ddgddg          }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t          j        |t          t          |                    d	                    d	d
                     t          t          |                    d                    dd
          }t          j	        |j
        |j
                   d S )Nr   r   r   rU   z.Series index must be unique for orient='index'r   rV   rx   r}   series)r7   typr0   )r   r   r   r&   r'   r#   assert_series_equalr   r   assert_equalr1   )r]   sr+   unserializeds       r-   test_series_non_unique_indexz0TestPandasContainer.test_series_non_unique_index  s:   C:aV,,,>]:S111 	& 	&IIWI%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	'2233G  	
 	
 	
 !QYYiY0011)
 
 
 	,"566666s   AAAc                 b    |                                 |                     d          k    sJ d S )NrV   rx   r   )r]   string_seriess     r-   test_series_default_orientz.TestPandasContainer.test_series_default_orient  s6    $$&&-*?*?w*?*O*OOOOOOOr9   c                 6   t          |                    |                    }t          |d|          }|}|r#|dv r|j                            d          |_        |dv r|                    d          }|d	k    rd |_        t          j        ||           d S )
Nrx   r  r  r7   r#  r   r1   r0   Tr2   r}   )	r   r'   r   rV   r   r4   rT   r#   r  )r]   r7   r  r   r^   r,   r)   s          r-   test_series_roundtrip_simplez0TestPandasContainer.test_series_roundtrip_simple  s    --V-<<==4Xf===  	L&,I"I"I%^223JKKHN***+++66HW HM
vx00000r9   c                     t          |                    |                    }t          |d||          }|}|dv r|                    d          }|dk    rd |_        t          j        ||           d S )Nrx   r  )r  r7   rQ   r  Tr2   r}   r   r'   r   r4   rT   r#   r  )r]   r7   rQ   object_seriesr^   r,   r)   s          r-   test_series_roundtrip_objectz0TestPandasContainer.test_series_roundtrip_object  s    --V-<<==4XfEJJJ ***+++66HW HM
vx00000r9   c                 X   t          g g t          j                  }t          |                    |                    }t          |d|          }|                    d          }|dv r)|j                            t          j                  |_        t          j
        ||           d S )NrV   rQ   rx   r  r  Tr2   r}   )r   r?   rg   r   r'   r   r4   rV   r   r#   r  )r]   r7   empty_seriesr^   r,   r)   s         r-   test_series_roundtrip_emptyz/TestPandasContainer.test_series_roundtrip_empty  s    b"*===,,F,;;<<4Xf===+++66g%^222:>>HN
vx00000r9   c                     t          |                    |                    }t          |d|          }|}|dv r|                    d          }|dk    rd |_        t          j        ||           d S )Nrx   r  r  r  Tr2   r}   r  )r]   r7   rj   r^   r,   r)   s         r-    test_series_roundtrip_timeseriesz4TestPandasContainer.test_series_roundtrip_timeseries  s    //v/>>??4Xf==="***+++66HW HM
vx00000r9   c                 6   t          t          d          g d          }t          |                    |                    }t	          |d|          }|                                }|dv r|                    d	          }t          j        ||           d S )
Nr   r   r   rE   rv   r   frU   rx   r  r  r  Tr2   )	r   r5   r   r'   r   rz   r4   r#   r  )r]   r7   rQ   r  r^   r,   r)   s          r-   test_series_roundtrip_numericz1TestPandasContainer.test_series_roundtrip_numeric  s    588#A#A#ABBB			00114Xf===6688***+++66H
vx00000r9   c                     t          g d          }d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S r  )r   r   r   r&   r'   )r]   r  r+   s      r-   test_series_to_json_exceptz.TestPandasContainer.test_series_to_json_except  s    999;]:S111 	( 	(IIYI'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(r  c                     t          g d          }t          t          |                                          dd          }t	          j        ||d           d S )N=
ףp=@r  r  r  T)r  precise_floatFr  )r   r   r   r'   r#   r  r]   r  r,   s      r-   #test_series_from_json_precise_floatz7TestPandasContainer.test_series_from_json_precise_float  sX    %%%&&8AIIKK00hdSSS
vq5AAAAAAr9   c                     t          g d          }t          t          |                                          dt          j                  }t          dgdz            }t          j        ||           d S )Nr  r  r  rQ   rl   r   )r   r   r   r'   r?   rO   r#   r  )r]   r  r,   r)   s       r-   test_series_with_dtypez*TestPandasContainer.test_series_with_dtype  sf    %%%&&8AIIKK00hbhOOO1#'??
vx00000r9   zdtype,expectedrm   r   rP   l    ,Uqc                     t          dgd          }t          |                                          }t          |d|          }t	          j        ||           d S )Nrm   r   rP   r  r  )r   r   r'   r   r#   r  )r]   rQ   r)   r  r^   r,   s         r-   test_series_with_dtype_datetimez3TestPandasContainer.test_series_with_dtype_datetime  s[     L>)9:::		$$4XU;;;
vx00000r9   c                     t          g dg dg          }t          t          |                                          d          }t	          j        ||           d S )Nr  T)r  r
   r   r   r'   r#   r(   r]   rs   r,   s      r-   "test_frame_from_json_precise_floatz6TestPandasContainer.test_frame_from_json_precise_float  s]    ***,>,>,>?@@8BJJLL11FFF
fb)))))r9   c                     t          t          d          g dd          }t          t          |                                          d           }t          j        ||           d S )Nr   r  rO   r  r  )r   r5   r   r   r'   r#   r  r  s      r-   test_typzTestPandasContainer.test_typ  s^    588#A#A#AQQQ8AIIKK00d;;;
vq)))))r9   c                 p   t          g dg dg          }t          t          |                                                    }t	          j        ||           t          g dg ddg d          }t          t          |                                                    }t	          j        ||           d S )Nr  r   r   r   )r   rn   r   rU   r  r  s      r-   test_reconstruction_indexz-TestPandasContainer.test_reconstruction_index$  s    			999-..8BJJLL1122
fb)))YYYYYY77OOO8BJJLL1122
fb)))))r9   c                     t          j        d          5 }|||fD ]&}|                    |           t          |           '	 d d d            d S # 1 swxY w Y   d S )N	test.json)r#   ensure_cleanr'   r   )r]   r   r   rt   r8  rs   s         r-   	test_pathzTestPandasContainer.test_path-  s    _[)) 	 T"I~>    

4   $ 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   -AAAc                 4   t          |                                          }t          |          }t          j        ||           t          |                                          }t          |d          }t          j        ||d           |j        J d S )Nr  r  F)check_names)r   r'   r   r#   r(   r  rT   )r]   rj   rt   r0  r,   s        r-   test_axis_datesz#TestPandasContainer.test_axis_dates3  s    ..00114
fn555 //11224X...
vEJJJJ{"""""r9   c                    |}t          d                              d          |d<   t          |                                          }t	          |          }t          j        ||           d|d<   t          |                    d                    }t	          |d          }|                                }|d         j        	                    d	          |d<   |d         
                    d
          |d<   t          j        ||           t          t          d                              d          |j                  }t          |                                          }t	          |d          }t          j        ||           d S )Nr   r,  r-  r   rL   	date_unitFr   r  rO   rU   r  r  )r   r4  r   r'   r   r#   r(   rz   r1   r   r   r   rV   r  )r]   rj   rt   rs   r0  r,   r)   rf   s           r-   test_convert_datesz&TestPandasContainer.test_convert_dates?  sW   z**224886


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

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

%%4X...
vr*****r9   date_formatepochiso	as_objectdate_typc                     |ddd          t           j        g}|r|                    d           t          ||          }|                    |          }|dk    rd}nd	}|r|                    d
d          }||k    sJ d S )Ni  r   )yearmonthdayr   rU   r  r  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}}	,"a":"a"})r[   r6  appendr   r'   replace)r]   r  r  r  r^   ri   r,   r)   s           r-   test_date_index_and_valuesz.TestPandasContainer.test_date_index_and_valuesW  s     d!333RV< 	KKT&&&55'!!DHH T   	:''[9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        ||           d S )Nidr   l    $Ar   z
2002-11-08r   )	r
   r   r[   r6  r   r   r   r#   r(   )r]   r  r^   r)   r,   s        r-   test_convert_dates_inferz,TestPandasContainer.test_convert_dates_infern  s     q*m4tQi@<(()Arv;7$
AS
 
 
 8K$5$5667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          |                              d          |d<   t          j        |j        d|j                            d          f<   t          j        |j        d|j                            d          f<   |r|                    d|          }n|                    d          }t          t          |                    }|
                                }t          j        ||           d S )Nr,  r-  r   rI   r  r  r  r  )r   r4  r[   r6  r   r   r5  r'   r   r   rz   r#   r(   )r]   r-  r  rt   rs   r0  r,   r)   s           r-   test_date_format_framez*TestPandasContainer.test_date_format_frame  s     t__,,T226
132:%%f---.132:%%f---. 	1::%9:EEDD::%:00D8D>>**7799
fh/////r9   c                     |}d}t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )N*Invalid value 'foo' for option 'date_unit'r   r  rL   r  )r   r   r&   r'   )r]   rt   rs   r+   s       r-   test_date_format_frame_raisesz1TestPandasContainer.test_date_format_frame_raises  s    :]:S111 	; 	;JJ5EJ:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   AA	A	c                    t          t          |                              d          |j                  }t          j        |j        d<   t          j        |j        d<   |r|                    d|          }n|                    d          }t          t          |          d	          }|
                                }t          j        ||           d S )
Nr,  rU   r   rI   r  r  r  r  r  )r   r   r4  rV   r[   r6  r   r'   r   r   rz   r#   r  )r]   r-  r  rj   rf   r0  r,   r)   s           r-   test_date_format_seriesz+TestPandasContainer.test_date_format_series  s     IdOO++D119NOOOV
V
 	1::%9:EEDD::%:00D8D>>x8887799
vx00000r9   c                     t          t          d          |j                  }d}t          j        t
          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr  rU   r  r   r  rL   r  )r   r   rV   r   r   r&   r'   )r]   rj   rf   r+   s       r-   test_date_format_series_raisesz2TestPandasContainer.test_date_format_series_raises  s    I566o>STTT:]:S111 	; 	;JJ5EJ:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   A&&A*-A*unit)r  r  r  r,  c                    |}t          d                              d          |d<   |j                            d          }t          d          |j        d|f<   t          d          |j        d|f<   t
          j        |j        d|f<   |                    d	|
          }t          t          |          |          }t          j        ||           t          t          |          d           }t          j        ||           d S )Nr  r,  r-  z19710101 20:43:42r   z21460101 20:43:42r   rl   r  r  r  )r   r4  r   r5  r   r[   r6  r'   r   r   r#   r(   )r]   r  rt   rs   dlr0  r,   s          r-   test_date_unitz"TestPandasContainer.test_date_unit  s    233;;DAA6
Z''"#6772"#67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                      }|                    |d|	           |                    d
           t          j
        t          |ddg          |dd           d S )Nz2023-01-01T11:22:33.123456zdatetime64[]rP   z2022-01-01T11:22:33.123456rQ   rV   )r-  date_objr  r  r   r-  r  r  F)r  check_dtype)r   r?   
datetime64r
   r   rr   r   r'   seekr#   r(   r   )r]   r  rV   rs   bufs        r-   test_iso_non_nano_datetimesz/TestPandasContainer.test_iso_non_nano_datetimes  s-    ]7>>?''''
 
 
 ]#?FFG////  
 #]#?FFG    
 
 jj


3ET
:::
 	c&*)=>>>"		
 	
 	
 	
 	
 	
r9   c                 B    d}t          t          |                     d S )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   )r]   r  s     r-   test_weird_nested_jsonz*TestPandasContainer.test_weird_nested_json  s%    " 	(1++r9   c                    t          t          j                            d                              d          t          d                    }t          d          |d<   t          d          |d<   d	|d
<   t          dd          |_	        t          |                                          }t          |t          j        t          j        d          }t          j        ||           d S )Nr   )rI   r   ABr   r   r-  rI   intsTboolsrd   )r  r  rP   )r
   r?   r@   rA   rB   rX   r   r5   r   rV   r   r'   r   rO   bool_r#   r(   )r]   dfj2r0  r,   s       r-   test_doc_examplez$TestPandasContainer.test_doc_example  s    I!!!$$44V<<d4jj
 
 
 !,,VQxxVW
A666
''428'L'LMMM
ff-----r9   c                     |dddd          }t          j        |          }|                                }t          t	          |                    }|                    |j        |j                  }d}t          j	        t          |          5  |                    t          j        d	          }d d d            n# 1 swxY w Y   t          j        ||           d S )
Nr/  r0  r^   z	teams.csvrw   z.The 'downcast' keyword in fillna is deprecatedr   F)downcast)r[   read_csvr'   r   r   reindexrV   r   r#   r$   r%   fillnar?   r   r(   )r]   r:  r8  rs   r  r,   resr+   s           r-   test_round_trip_exceptionz-TestPandasContainer.test_round_trip_exception  s    xffk::[JJLL8A;;''nn28RZn@@>'SAAA 	5 	5**RVe*44C	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
c2&&&&&s   "B??CCzfield,dtype
created_atUTC)tz	closed_at
updated_atc                     d}|                     |           t          |j        d          }||         j        |k    sJ d S )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   urlrQ   )r]   fieldrQ   
httpserverr^   r,   s         r-   test_urlzTestPandasContainer.test_url*  sS     J   ...:>>>>e}"e++++++r9   c           	         d }t          t          d          t          d          g          }|j        dk    sJ t          t	          |                                          d                              |          }t          j        ||           t          t          d          t          d          gt          dd	g          
          }|j        dk    sJ t          t	          |                                          d                              |          }t          j        ||           t          t          d          t          d          g          }|d         j        dk    sJ t          j        |t          t	          |                                                                        |                     d S )Nc                 .    t          j        | d          S )Nr  r  )r[   to_timedelta)r   s    r-   <lambda>z4TestPandasContainer.test_timedelta.<locals>.<lambda>;  s    boad;;; r9      rI   secondsztimedelta64[ns]r  r  r   r   rU   )r   r   rQ   r   r   r'   applyr#   r  r   r
   r(   )r]   	converterri   r,   frames        r-   test_timedeltaz"TestPandasContainer.test_timedelta:  s   ;;	immYq%9%9%9:;;y-----8CKKMM22AAAGG	RR
vs+++immYq%9%9%9:%A--PPPy-----8CKKMM22AAAGG	RR
vs+++9R==)A*>*>*>?@@Qx~!22222
9Xemmoo6677==iHH	
 	
 	
 	
 	
r9   c                    t          t          d          t          d          gddgt          dd          d	          }t          |                    d
                    }t          |          }t          j        |j        d
          |d<   t          j	        |j
                  |d<   t          j        ||           d S )Nr  daysrI   r  r   r   r   )startre   r   r   rE   r,  r  r  r   rE   )r
   r   r   r   r'   r   r[   r  r   to_datetimerE   r#   r(   )r]   r   r^   r,   s       r-   test_timedelta2z#TestPandasContainer.test_timedelta2N  s    R((()A*>*>*>?Vj!<<< 
 
 55664ofhT:::snVX..s
eV,,,,,r9   c                    t          d          }t          d          }t          d||git                    }t          dt	          j        |                              d          j        |                    d          j        gi          }t          |	                    d                    }t          |ddi          }t          j        ||d	           d S )
Nr  r   r   rP   r,  r  rO   Fr  )r   r   r
   rr   r[   	Timedeltar4  _valuer   r'   r   r#   r(   )r]   tdrf   r   r)   r^   r,   s          r-   test_mixed_timedelta_datetimez1TestPandasContainer.test_mixed_timedelta_datetime\  s    r]]z""3R/8882<##++D118"**T:J:J:QRS
 
 55664W~666
fhGGGGGGr9   timedelta_typc                     |d           |d          t           j        g}|r|                    d           t          ||          }|dk    rd}nd}|r|                    d	d
          }|                    |          }||k    sJ d S )Nr   r#  r   r   rU   r  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r  r  r  )r[   r6  r  r   r  r'   )r]   r  r  r.  r^   ri   r)   r,   s           r-   test_timedelta_to_jsonz*TestPandasContainer.test_timedelta_to_jsonh  s    
 1%%%}}!'<'<'<bfE 	KKT&&&%S H QH 	:''[99H55!!!!!!r9   c                      |d          g}t          ||          }|r|                    t                    }|                                }d}||k    sJ d S )N*   )millisecondsrU   z	{"42":42})r   r   rr   r'   )r]   r  r.  r^   ri   r,   r)   s          r-   +test_timedelta_to_json_fractional_precisionz?TestPandasContainer.test_timedelta_to_json_fractional_precision  sm     2.../T&&& 	%**V$$C!!!!!!r9   c                     t                      }t          dd|gi          }t          ddt          |          gi          }t          t	          |                    t                                        }t          j        ||d           d S )Nr      r|  Fr  )rr   r
   r   r   r   r'   r#   r(   )r]   r   r   r)   r,   s        r-   test_default_handlerz(TestPandasContainer.test_default_handler  s~    3E
+,,cAs5zz?3448EMM#M$F$FGGHH
hGGGGG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 d S )Nc                 p    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  s;    #w'' S-ch/?$AQRRs88Or9   	   r   STRrl   r   zN/Ar  r   r   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r1   r}  r7   )r
   r?  r   r   )r]   rC  df_listr)   s       r-   test_default_handler_indirectz1TestPandasContainer.test_default_handler_indirect  s    	 	 	 %B0edE7RSSc
  
1 	
 JJJhVVVVVVr9   c           	          t          ddt          dd          gt          d          d t          dd          gdd	d
g          }d}|                    t          d          |k    sJ d S )Nr   gffffff@rl   rF  r   g333333?r   r  r   r   r   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r1   rG  )r
   r?  r   r'   r   )r]   rs   r)   s      r-   ,test_default_handler_numpy_unsupported_dtypez@TestPandasContainer.test_default_handler_numpy_unsupported_dtype  s    c71b>>*%,,gcSToo1VWW#J
 
 

% 	
 zz#hz??8KKKKKKr9   c           
         dfd}t          j        t                    5  t          dddt	                      gi                              |           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddt          dd	          gi                              |           d d d            d S # 1 swxY w Y   d S )
Nraisinc                 "    t                    rk  )	TypeError)rB  r+   s    r-   my_handler_raiseszJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raises  s    C.. r9   r   r   r   r   r|  rl   rF  )r   r   rO  r
   rr   r'   r?  )r]   rP  r+   s     @r-   test_default_handler_raisesz/TestPandasContainer.test_default_handler_raises  s|   	! 	! 	! 	! 	! ]9C000 	 	sQ688,-..66 1 7   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9C000 	 	sQ71b>>2344<< 1 =   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   5A%%A),A)7CCCc                 R   t          dg di          }|d         |d<   |                                }|d                             d          |d<   ||                                k    sJ |d         }|d         }|                                |                                k    sJ d S )Nr   )r   r   rE   r   r   r   r   rn   category)r
   r'   r   )r]   rs   r)   r  scs        r-   test_categoricalz$TestPandasContainer.test_categorical  s    @@@ABBS'3::<<S'..,,32::<<''''sGWyy{{bjjll******r9   c                    t          ddd          }|                    d                              d           }t          |t          dd          d          }|                                }||d<   |                                }||                                k    sJ t          |          }t          |          }|                                |                                k    sJ d S )	Nr   r   
US/Easternre   r  utcrd   r{  r   )r   
tz_converttz_localizer
   rz   r'   r   )r]   tz_rangetz_naivers   df_naiver)   stzs_naives           r-   test_datetime_tzz$TestPandasContainer.test_datetime_tz  s    j!EEE&&u--99$??XJz1,M,M,MNNOO7799 ##%%2::<<''''X""{{}} 1 1111111r9   c                 f   t          t          j                            d                              d                    }t          j        |j        d d<   |                    d          }|                                }||                                k    sJ t          t          j                            d                              d                    }t          j        |j        d d<   |                    d          }|                                }||                                k    sJ d S )Nr   )rb   rl      Sparserb   )
r
   r?   r@   rA   rB   r   r   r   r'   r   )r]   rs   sdfr)   r  sss         r-   test_sparsezTestPandasContainer.test_sparse  s    ry,,Q//??HHIIVrr
ii!!::<<3;;==((((29((++;;B??@@Fbqb	XXh99;;2::<<''''''r9   rf   z2013-01-10 05:00:00Zz2013-01-10 00:00:00rW  z2013-01-10 00:00:00-0500c                     d}t          |d          |k    sJ |                                }t          |d          |k    sJ d S )Nz"2013-01-10T05:00:00.000Z"T	iso_dates)r   to_pydatetimer]   rf   expdts       r-   test_tz_is_utcz"TestPandasContainer.test_tz_is_utc  s\     +2...#55552...#555555r9   c                     t          d          }d}t          |d          |k    sJ |                                }t          |d          |k    sJ d S )Nz2013-01-10 05:00:00z"2013-01-10T05:00:00.000"Tri  )r   r   rk  rl  s       r-   test_tz_is_naivez$TestPandasContainer.test_tz_is_naive  sh    ,--)2...#55552...#555555r9   r\  z2013-01-01 05:00:00Zr   rd   z2013-01-01 00:00:00rX  z2013-01-01 00:00:00-0500c                    d}d}t          |d          |k    sJ t          |          }t          |d          |k    sJ t          |                    t                    d          |k    sJ t	          d|i          }t          |d          }||k    sJ t          |                    dt          i          d          sJ d S )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"}}Tri  DT)r   r   r   rr   r
   )r]   r\  rm  dfexpr;  rs   r,   s          r-   test_tz_range_is_utcz(TestPandasContainer.test_tz_range_is_utc  s     H/ 	 8t444;;;;H%% 3$///366663::f-->>>#EEEEc{##R4000299dF^44EEEEEEEEr9   c                 j   t          dd          }d}d}t          |d          |k    sJ t          |                    t                    d          |k    sJ t	          d|i          }t          |d          }||k    sJ t          |                    dt          i          d          sJ d S )	Nz2013-01-01 05:00:00r   rd   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"}}Tri  rs  )r   r   r   rr   r
   )r]   r;  rm  rt  rs   r,   s         r-   test_tz_range_is_naivez*TestPandasContainer.test_tz_range_is_naive"  s    .:::EV 3$///366663::f-->>>#EEEEc{##R4000299dF^44EEEEEEEEr9   c                     t          t          d          d          }t          ddgddggddg          }t          j        ||           d S )	Nr!   Tr   r   r   r   r   r   r   r   r
   r#   r(   r  s      r-   test_read_inline_jsonlz*TestPandasContainer.test_read_inline_jsonl1  s\     8$IJJRVWWWq!fq!f-SzBBB
fh/////r9   c                     t          d|j         dd|          }t          ddgddggddg	          }t          j        ||           d S )
Nzs3n://z/items.jsonlT)r    storage_optionsr   r   r   r   r   )r   rT   r
   r#   r(   )r]   s3_public_bucket_with_datas3sor,   r)   s        r-   test_read_s3_jsonlz&TestPandasContainer.test_read_s3_jsonl8  sn    
 B/4BBB 
 
 

 q!fq!f-SzBBB
fh/////r9   c                 \   t          j        d          5 }t          |dd          5 }|                    d           d d d            n# 1 swxY w Y   t	          |d          }t          dd	gdd	ggd
dg          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nztmp_items.jsonwzutf-8encodingr!   Tr   r   r   r   r   r   )r#   r  openwriter   r
   r(   )r]   r8  infiler,   r)   s        r-   test_read_local_jsonlz)TestPandasContainer.test_read_local_jsonlE  sF   _-.. 	4$dC'222 DfBCCCD D D D D D D D D D D D D D Dt4000F 1a&1a&!1C:FFFH!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s4   B!A
B!
A	B!A	AB!!B%(B%c                 B   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        ||           d S )
Nu5   {"a": "foo”", "b": "bar"}
{"a": "foo", "b": "bar"}
Tr   u   foo”rJ   rL   r   r   r   )r   r   r
   r#   r(   r]   r0  r,   r)   s       r-   test_read_jsonl_unicode_charsz1TestPandasContainer.test_read_jsonl_unicode_charsN  s    
 I~~4t,,,{E2UENCcSVZXXX
fh/// QRR4t,,,{E2UENCcSVZXXX
fh/////r9   bigNumc                 .   t          |t          dg          }|                                }dt          |          z   dz   }||k    sJ t	          |t          dgdg          }|                                }dt          |          z   dz   }||k    sJ d S )	N	articleIdr  {"articleId":r  r   rQ   rV   r   {"0":{"articleId":r   )r   rr   r'   r   r
   )r]   r  r  r0  r)   rs   s         r-   test_to_json_large_numbersz.TestPandasContainer.test_to_json_large_numbers_  s     f[MBBB~~"S[[036xvVK=1#NNNzz||'#f++5<xr9   l        l            c                    t          dt          |          z   dz             }d}t          j        t          |          5  t          |           d d d            n# 1 swxY w Y   t          dt          |          z   dz             }t          j        t          |          5  t          |           d d d            d S # 1 swxY w Y   d S )Nr  r  z#Value is too small|Value is too bigr   r  r   )r   r   r   r   r&   r   )r]   r  r0  r+   s       r-   test_read_json_large_numbersz0TestPandasContainer.test_read_json_large_numbersl  s?    #f++5;<<4]:S111 	 	dOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ,s6{{:TABB]:S111 	 	dOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$    AA #A $CCCc                 *   d}t          |          }t          |d          }t          ddg          }t          j        ||           d}t          |          }t          |          }t          ddgdg	          }t          j        ||           d S )
Nz'{"articleId": "1404366058080022500245"}r  r  gg_SDr  rU   z.{"0": {"articleId": "1404366058080022500245"}}r   rw   )r   r   r   r#   r  r
   r(   r  s       r-   test_read_json_large_numbers2z1TestPandasContainer.test_read_json_large_numbers2x  s    8~~4X...+k];;;
vx000?~~4[sKKK
fh/////r9   c                 &   t          ddgddggddg          }|                    dd          }d	}||k    sJ t          d
dgddggddg          }|                    dd          }d}||k    sJ t          j        t	          t          |          d          |           t          ddgddggddg          }|                    dd          }d}||k    sJ t          j        t	          t          |          d          |           d S )Nr   r   r   r   r   r0   Tr7   r    z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}rJ   zfoo"z/{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"}
r   zfoo\za\r"   )r
   r'   r#   r(   r   r   r  s       r-   test_to_jsonlz!TestPandasContainer.test_to_jsonl  sE   AA'#s<<<9D993!!!!&%9C:NNN9D99G!!!!
i(8(8EEErJJJ %(65/:UCLQQQ9D99R!!!!
i(8(8EEErJJJJ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  rS  c                 2   t          d |D             |          }d}t          j        d          5 }|                    ||           t	          t          |          |          }t          j        ||d           d d d            d S # 1 swxY w Y   d S )Nc                 f    g | ].}t          |t                    r|                    d           n|/S )latin-1)r>  rm  decode)rC   r   s     r-   r   z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>  s8    MMMAJq%$8$8?QXXi   aMMMr9   rP   r  r  r  F)check_categorical)r   r#   r  r'   r   r   r  )r]   rQ   r  ri   r  r8  retrs          r-   test_latin_encodingz'TestPandasContainer.test_latin_encoding  s    $ MMMMM
 
 
 _[)) 	GTKKxK000Xd^^h???D"3FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   ABBBc                     t          dt          d          gi          }|                    dd                                          }|                                 |                    dd                                          }||k    sJ d S )Nr   r   T)rV   deep)r
   r   memory_usagesumr'   )r]   rs   size_before
size_afters       r-   "test_data_frame_size_after_to_jsonz6TestPandasContainer.test_data_frame_size_after_to_json  s    c!ffX''ooDto<<@@BB


__4d_;;??AA
j((((((r9   r   r   r   r   1.2.c                     t          ddgddgg||          }|                    d          }t          t          |          d          }t	          j        ||           d S )Nr   r   r   rl   rw   tablerx   r
   r'   r   r   r#   r(   )r]   rV   r   r)   dfjsonr,   s         r-   .test_from_json_to_json_table_index_and_columnszBTestPandasContainer.test_from_json_to_json_table_index_and_columns  sn     q!fq!f-UGLLL!!!118F++G<<<
fh/////r9   c                     t          ddgddgddgd          }|                    d	          }t          t          |          d	          }t	          j        ||           d S )
Nr   r   r   r   r   r   r&  r  rx   r  )r]   r)   r  r,   s       r-   #test_from_json_to_json_table_dtypesz7TestPandasContainer.test_from_json_to_json_table_dtypes  sn    Aq6c
#sLLMM!!!118F++G<<<
fh/////r9   zincorrect na conversion)r}   r0   rV   r   c                    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          }|                    |          }t	          t          |          |dddd	ddd          }t          j        ||           d S )Nr  rO   rP   )Nr   r   rg   )N rE   rr   TFTboolr   r   NrS  )rc   Nz
2020-01-03r   )IntegerFloatObjectBoolCategoryDatetimerx   r7   rQ   )r
   	from_dictr   r'   r   r   r#   r(   )r]   r7   r)   r  r,   s        r-   %test_to_json_from_json_columns_dtypesz9TestPandasContainer.test_to_json_from_json_columns_dtypes  s    &!)))7;;; 0 0 0	BBB AAA222&AAA"#3#3#3:FFF"666>N  	 	
 
 !!!00V"""&, 
 
 
 	fh/////r9   )r   rE   c                     t          ddgddgddgd          }|                    d	          }d
}t          j        t          |          5  t          |d|           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r&  r  rx   z)cannot pass both dtype and orient='table'r   r  r
   r'   r   r   r&   r   )r]   rQ   rs   r  r+   s        r-   !test_read_json_table_dtype_raisesz5TestPandasContainer.test_read_json_table_dtype_raises  s     aV3*C:FFGG7++9]:S111 	; 	;fWE::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   A--A14A1)rV   r   r0   r1   c                     t                      }t          t          d          |d          }t          j        |j        |j                   t          j        |j        |j                   d S )Nz{}Tr   )r
   r   r   r#   assert_index_equalrV   r   )r]   r7   r)   r,   s       r-   %test_read_json_table_empty_axes_dtypez9TestPandasContainer.test_read_json_table_empty_axes_dtype   s\     ;;8D>>&tLLL
flHN;;;
fnh.>?????r9   c                     t          ddgddggddgddg	          }|                    d
          }d}t          j        t          |          5  t          |d
d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   rl   r   r   r  r  rw   r  rx   z0cannot pass both convert_axes and orient='table'r   Tr   r  )r]   rs   r  r+   s       r-   (test_read_json_table_convert_axes_raisesz<TestPandasContainer.test_read_json_table_convert_axes_raises	  s    AA'SzD$<PPP7++@]:S111 	A 	AfW4@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   A00A47A4zdata, expectedrl   rI   r   )r   r^   rL   rq   r  r   rS   )rT   r^   )rT   rV   c                 l    |                     dd          }t          j        |          }||k    sJ d S )Nr}   Fr7   rV   )r'   r0  loadsr]   r^   r)   r,   s       r-   test_index_false_to_json_splitz2TestPandasContainer.test_index_false_to_json_split  s@    @ WE::F##!!!!!!r9   c                     |                     dd          }t          j        |          }t          j        j                            |d          t          |                              d          d}||k    sJ d S )Nr  Fr  rU   r0   rx   )schemar^   )r'   r0  r  r[   r/  build_table_schemar
   to_dictr]   r^   r,   r)   s       r-   test_index_false_to_json_tablez2TestPandasContainer.test_index_false_to_json_table6  s    & WE::F## ej33D3FFdOO++9+==
 

 !!!!!!r9   c                     t          ddgddggddg          }d}t          j        t          |	          5  |                    |d
           d d d            d S # 1 swxY w Y   d S )Nr   r   rl   rI   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11 	3 	3JJfEJ222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3   AA #A r0   c                     t          ddgddggddg          }d}t          j        t          |	          5  |                    |d
           d d d            d S # 1 swxY w Y   d S )Nr   r   rl   rI   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11 	2 	2JJfDJ111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2r  r  c                     t          ddgddgd          }|                    ||          }t          t          |          |          }t	          j        ||           d S )Nr   r   r   rl   r  r  rx   r  )r]   r7   rV   r)   r  r,   s         r-   "test_index_false_from_json_to_jsonz6TestPandasContainer.test_index_false_from_json_to_jsono  sl    
 Aq6A7788!!u!==8F++F;;;
fh/////r9   c                     t          t          d          dd          }t          dgd          }t          dg|	          }t	          j        ||           d S )
Nz{"2019-01-01T11:00:00.000Z":88}r  rV   r  z2019-01-01 11:00:00zM8[ns, UTC]rP   X   rU   )r   r   r   r   r#   r  )r]   r,   exp_dtir)   s       r-   test_read_timezone_informationz2TestPandasContainer.test_read_timezone_informationy  sk    677Xg
 
 
  !6 7}MMM2$g...
vx0000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        ||           d S )Nz{"url":{"0":"rz  r  ry  )r]   r  r,   r)   s       r-   test_read_json_with_url_valuez1TestPandasContainer.test_read_json_with_url_value  sQ     8$@c$@$@$@AABBecU^,,
fh/////r9   compression)r  z.gzz.bz2z.tarc                     d d| }t          j        t          d| d          5  t          |           d d d            d S # 1 swxY w Y   d S )N  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz.jsonzFile z does not existr   )r   r   FileNotFoundErrorr   )r]   r  long_json_paths      r-   'test_read_json_with_very_long_file_pathz;TestPandasContainer.test_read_json_with_very_long_file_path  s     '::[::]%L^%L%L%L
 
 
 	& 	&
 n%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   AAAzdate_format,key)r  i \&)r  
P1DT0H0M0Sc                     t          dggt          j        d          g          }d| d}|                    |          }||k    sJ d S )Nr   1Dr   r  z
":{"0":1}}r  )r
   r[   r*  r'   )r]   r  keyrs   r)   r,   s         r-   test_timedelta_as_labelz+TestPandasContainer.test_timedelta_as_label  sa     ur|D'9'9&:;;;++++44!!!!!!r9   zorient,expected)rV   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}r  z,Produces JSON but not in a consistent manner)marksc                 n    t          dggdgdg          }|                    |          }||k    sJ d S )Nr   r  )rE   rv   rw   rx   r   r]   r7   r)   rs   r,   s        r-   test_tuple_labelsz%TestPandasContainer.test_tuple_labels  sJ    0 uZL:,GGG6**!!!!!!r9   indent)r   r   rl   c                     t          ddgddggddg          }|                    |          }d	|z  }d
| d| | d| | d| d| d| | d| | d| d}||k    sJ d S )NrL   rJ   rK   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   )r]   r  rs   r,   spacesr)   s         r-   test_to_json_indentz'TestPandasContainer.test_to_json_indent  s    7#sLLL6**v		 				 	 	 
	 	 		 	
 	 	 	 
	 	 	 
	 	 	 	 	 !!!!!!r9   z]Adjust expected when infer_string is default, no bug here, just a complicated parametrization))r}   z{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r0   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])rV   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                 v    t          ddgddggddg          }|                    |d	          }||k    sJ d S )
NrL   rJ   rK   r  r   r   r   rl   )r7   r  r   r  s        r-   test_json_indent_all_orientsz0TestPandasContainer.test_json_indent_all_orients  sT    x 7#sLLL6!44!!!!!!r9   c                     t          j        t          d          5  t                                          d           d d d            d S # 1 swxY w Y   d S )Nzmust be a nonnegative integerr   r  )r   r   r&   r
   r'   rr  s    r-    test_json_negative_indent_raisesz4TestPandasContainer.test_json_negative_indent_raisesY  s    ]:-LMMM 	+ 	+KKr***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   #AAAc           	          t          d          }t          |          }t          dd dt          j        dt          j         dg          }t          j        ||           d S )Nz?["a", NaN, "NaN", Infinity, "Infinity", -Infinity, "-Infinity"]r   NaNInfinityz	-Infinity)r   r   r
   r?   r   r#   r(   r  s       r-   test_emca_262_nan_inf_supportz1TestPandasContainer.test_emca_262_nan_inf_support]  sc    M
 
 4$rvzBF7KH
 
 	fh/////r9   c                     t          j        ddiddig          }t          dddgi          }t          t	          |                    }t          j        ||           d S )Ncol31900441201190696999Text)r0  dumpsr
   r   r   r#   r(   )r]   encoded_jsonr)   r,   s       r-   test_frame_int_overflowz+TestPandasContainer.test_frame_int_overflowh  sf    zE+A#BUFO"TUUe&<f%EFGG8L112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                 n    |                     d          }|                    d          }||k    sJ d S )NTfuture_stackrV   rx   )stackr'   )r]   	dataframer)   r  r,   s        r-   test_json_multiindexz(TestPandasContainer.test_json_multiindexo  sA     d33w//!!!!!!r9   c                 "   |j         d}}t          g dg dd          }|                    d| d| |           d}	 |d
 |j                                        D             v rd S t          j        d           |dz  }|dk    s
J d            Q)Nr  r  )r   rl   r   r
  zs3:///)r|  rI   Tc              3   $   K   | ]}|j         V  d S rk  )r  )rC   rB  s     r-   	<genexpr>z1TestPandasContainer.test_to_s3.<locals>.<genexpr>  s$      QQ3swQQQQQQr9   r  r   z,Timed out waiting for file to appear on moto)rT   r
   r'   objectsalltimesleep)r]   s3_public_bucketr~  mock_bucket_nametarget_filers   timeouts          r-   
test_to_s3zTestPandasContainer.test_to_s3~  s     )9(={+YYYYYY7788


;+;;k;;T
RRR	OQQ2B2J2N2N2P2PQQQQQJsOOOsNGQ;;; N;;;	Or9   c                     t          |t                    r5t          j                            d          }|                    |           t          |gg                                          }|dk    sJ d S )Nznot implementedr   z{"0":{"0":null}})r>  r   r   r   r   r   r
   r'   )r]   nulls_fixturer   r   r,   s        r-   test_json_pandas_nullsz*TestPandasContainer.test_json_pandas_nulls  sw    mW-- 	&;$$,=$>>D%%%]O,--5577+++++++r9   c                     t          t          d          d          }t          g d          }t          j        ||           d S )Nz[true, true, false]r  r  )TTF)r   r   r   r#   r  r  s      r-   test_readjson_bool_seriesz-TestPandasContainer.test_readjson_bool_series  sJ    8$9::III---..
vx00000r9   c                     t          dt          dd          ddg                              d          }|                                }d}||k    sJ d S )	NTz
2017-01-20z
2017-01-23rL   rJ   rw   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  st    \<88EN
 
 
 %T%
"
"	 	
 B 	 !!!!!!r9   c                      G d d          }t           |dddd          g          }t          j        |                                          ddddd	ik    sJ d S )
Nc                       e Zd ZddZd ZdS )GTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectri  Nc                 >    || _         || _        || _        || _        d S rk  r   r   _crv   )r]   r   r   r*  rv   s        r-   rp  zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__  s"    r9   c                     dS )NrI   r   rr  s    r-   r   zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.e  s    qr9   rt  )ru  rv  rw  rp  r   r   r9   r-   _TestObjectr'    s7               r9   r,  r   r   r   rl   r)  0)r   r   rv   )r   r0  r  r'   )r]   r,  r  s      r-   test_to_json_series_of_objectsz2TestPandasContainer.test_to_json_series_of_objects  s    	 	 	 	 	 	 	 	 qA!q999:;;z&..**++1115M5M/NNN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                 >    |                                 }||k    sJ d S rk  r   r  s       r-   test_complex_data_tojsonz,TestPandasContainer.test_complex_data_tojson  s)    F !!!!!!r9   c                 n    d}t          dddgi          }|                    d          }||k    sJ d S )NzY{"columns":["col1"],"index":[0,1],"data":[[13342205958987758245],[12388075603347835679]]}col1l   :!c&HI l   v8$Z_
 )r^   r}   rx   r   )r]   r)   rs   r,   s       r-   test_json_uint64z$TestPandasContainer.test_json_uint64  sU    F 	 V&:<P%QRSSS7++!!!!!!r9   )r}   r0   r1   rV   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          }|rJt                              g d                    }t                              g d                    }n|dk    ret          t	          j        g dt          j	                            }t          t	          j        ddt          gt          j	                            }n|dk    r[t          j        d          ddlm
  
                    g d                    } 
                    g d                    }nHt                              g d                    }t                              g d                    }|                    |          }t          j        d|          5  t#          t%          |          ||          }	d d d            n# 1 swxY w Y   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    r(ddlm
 t          
fdj        D                       |dk    r!t)          t+          d                    _        t-          j        |	           d S )Npyarrowr   r   Int64rP   r  r   r   Float64)r   r   r   )TFNr  r&  r  )r   r   rE   rv   r   r  grE  pythonr   r   r   ArrowExtensionArrayrx   mode.string_storage)dtype_backendr7   TFbooleanc           	      ^    i | ])}|                      |         d                     *S )Tfrom_pandas)array)rC   r  r;  r)   pas     r-   rF   zDTestPandasContainer.test_read_json_dtype_backend.<locals>.<dictcomp>,  sL        ,,RXXhsmQUX-V-VWW  r9   r1   rc  )r   importorskipr
   r   r?   r   r   rB  r   object_r	   pandas.arraysr;  r   r'   r[   option_contextr   r   r   rX   r5   r#   r(   )r]   string_storager=  r7   r   rs   string_arraystring_array_naoutr,   r;  r)   rC  s             @@@r-   test_read_json_dtype_backendz0TestPandasContainer.test_read_json_dtype_backend  s     ++QN':::IIIW555S"&#.i@@@OOO9===(((((($__%%%	 	
 
  	K9"((???:S:STTL<RXXFVFVFV=W=WXXOOx''&rxrz'R'R'RSSL)"(Cb>*T*T*TUUOOi''$Y//B999999..rxx/H/HIIL11"((;K;K;K2L2LMMOO ,BHH___,E,EFFL.rxx8H8H8H/I/IJJOjjj''4nEE 	 	]6  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 QN':::IIIW555S"&#.i@@@OOO9===T5"-Y???///yAAA!$	 	
 
 I%%999999      '/   H X#E!HH~~H
fh/////s    I		II)r}   r0   rV   c                    t          j        d          }t          dt          j        dgd          }|                    |          }t          j        d|          5  t          t          |          ||d	          }d d d            n# 1 swxY w Y   t          dt          j        dgd          }|dk    r3d
dl
m}	 t           |	|                    |d                              }t          j        ||           d S )Nr5  r   r   r6  rP   rx   r<  r  )r=  r7   r  r   r:  Tr@  )r   rD  r   r?   r   r'   r[   rG  r   r   rF  r;  rB  r#   r  )
r]   rH  r=  r7   rC  ri   rK  r,   r)   r;  s
             r-   test_read_json_nullable_seriesz2TestPandasContainer.test_read_json_nullable_series7  sI     ++a^7333kkk((4nEE 	 	]6x  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 1bfa.888I%%99999911"((8QU(2V2VWWXXH
vx00000s   !BBBc                     d}t          j        t          |          5  t          dd           d d d            d S # 1 swxY w Y   d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   r  numpy)r=  )r   r   r&   r   )r]   r+   s     r-   test_invalid_dtype_backendz.TestPandasContainer.test_invalid_dtype_backendL  s    % 	 ]:S111 	5 	5fG4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   =AA)ru  rv  rw  r   fixturer`   rj   rt   r|   r   parametrizer   r   r   r   r   r   r   r   r?   rO   r   rg   intr   r   r   r   r   r   AssertionErrorr   r9  r   r   r   r   r   skipifr   r  r  r  r  r  r)  rB  re  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  r	  network
single_cpur[   DatetimeTZDtyper  r!  r(  r-  r*  r   r0  r4  r7  rI  rK  rQ  rU  ra  rg  ro  rq  r   ru  rw  rz  r,  skip_if_not_us_localer  r  r  sysmaxsizer  r  r  r  rO  r   rr   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.  r0  r3  rL  rN  rQ  r   r9   r-   r;   r;   `   s       ^I I ^I ^	 	 ^	 ^	 	 ^	
> 
> 
> [X'E'E'EFF> > GF> [X';<<& & =<& [X':;;[3Z#s$3Z#s$X3x i
##S)IIj,A,A3+GH		
 0 0  <;0( [X'F'F'FGG& & HG&N N N [Wuen55[^dE];;> > <; 65> [Wubh&788[^dE];;> > <; 98> [WtRZd&CDD[^dE];;> > <; ED>< [^dE];;> > <;>* [^dE];;0 0 <;0 [^dE];;> > <;>  [^dE];;> > <;>& [J    [fu~.fu~.fu~.	
 * * 	 * [D; V 
 
/	
! !D5 5E! !D5 [WtUm44[^dE];;+ + <; 54+( [WtUm440 0 540 [URVbfW$566[WtUm44+ + 54 76+ [D)OPP[&	
 	
 	

 
B B
 
 QPB
) ) )B B B" " "

 

 

+ + +<M M M<`
 `
 `
D$
 $
 $
L" " "7 7 7$P P P1 1 1 [Wudm44
1 
1 54
1	1 	1 	1
1 
1 
1 [Wrz3&788	1 	1 98	1( ( (B B B
1 1 1 [66<.0@AAABFFL>**+	
 1 1 1* * *
* * *
* * *     
# 
# 
#+ + +0 []We,<==[[4-88[Z(-9JI)VWW" " XW 98 >="( [	
 	
 	
 	0 	0 	0 [	
 	
 	
	 	0 0	 	0; ; ; [	
 	
 	
	 	1 1	 	1; ; ; [V%<%<%<==* * >=*$ [V%6%6%677$
 $
 87$
L  *. . .' ' ' [[[-2-7778*+-2-7778	
 , ,   ,
 
 
(- - -
H 
H 
H [[4-88[]UG,<==[_r|Y.GHH" " IH >= 98"( [[4-88[_r|Y.GHH" " IH 98"H H H
 
 
*L L L  + + +2 2 2 ( ( (  [I,--I+===I011	
 6 6 66 6 6 [J-q999J,aLIIIJ11===	
 F F F&F F F0 0 0 [	0 	0  	04 4 40 0 0" [Xa3;?9K'LMM
  
  NM
  [Xe'<==	 	 >=	0 0 0K K K, [EiXX[111,,,...999###+++111VS$%263d3
	
  [Wz6&:;;
G 
G <;  YX 
G) ) ) [$Ac
S#Jc
T4LQ  [Y#sc3Z$(NOO0 0 PO 00 0 0 [1133<UVV[X'O'O'OPP0 0 QP WV0< [Wt3S-A-A&BCC; ; DC; [X'P'P'PQQ@ @ RQ@A A A [ 	Aq6Aq6*S#J??? #J!Q!Q0@AA
 	Aq6Aq6*S#J???KKERR #J!Q!Q0@AA
 	VaV$sCj#scSVZ@X   !#J!Q!Q0@AA	 VIIIC(((3			*J*JKyyys+++77>>iii00
 1vCc
S#J/GHHHq!f--)	
 8" "9 8" [YAA'#s<<<YAA'#s<<<HHOO	VaV$sCj#scSVZ@X   VIIIC(((VIIIC(((44U;;VQFc3Z#s,DEEE	
 " " " [X';<<3 3 =<3 [X	8'<==2 2 >=2 [X'9::[WtUm440 0 54 ;:01 1 1 [	
 	
 	
 0 0 0 [### & &	 & [/1FG " " " [<>FLk''I (     FLk''I (    	
 ," "- ," [Xyyy11" " 21"& [""$$-   
 [q	
 q	
 q	
t tj" "kt t t"+ + +	0 	0 	00 0 0 [ 				@@AAD	
	 	" "	 	"
 [O O O, , ,1 1 1" " "(O O O [ 7v&99::0 =\lKKLL2 	GW-/ABCC2 	#]3lM5RS 4	)	
   B" "C   B"
" " " [DDD D0 D0 D0L [X'D'D'DEE1 1 FE1(5 5 5 5 5r9   r;   c                      t          t          d                    } |                                 }t          j        t
          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr   zThe engine type foor   rL   )enginer   r5   r'   r   r   r&   r   ri   rK  s     r-   test_invalid_enginerc  U  s    
q

C
++--C	z)>	?	?	? % %#e$$$$% % % % % % % % % % % % % % % % % %s   A++A/2A/c                      t          t          d                    } |                                 }t          j        t
          d          5  t          |dd           d d d            d S # 1 swxY w Y   d S )Nr   z&currently pyarrow engine only supportsr   r5  F)r`  r    ra  rb  s     r-   test_pyarrow_engine_lines_falsere  ]  s    
q

C
++--C	z)Q	R	R	R 6 6#iu55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A,,A03A0c           	         t          j        d           t          ddgddggddgdd	g
          }|                                }t	          j        dd          5  t          t          |                    }d d d            n# 1 swxY w Y   t          ddgddggdt          ddgd          t          dd	gd                    }t          j
        ||           d S )Nr5  r   r   rE   rv   zrow 1zrow 2zcol 1zcol 2rw   zfuture.infer_stringTr   rP   r  )r   rD  r
   r'   r[   rG  r   r   r   r#   r(   )r7   rs   rK  r,   r)   s        r-   $test_json_roundtrip_string_inferencerg  e  s>   
	"""	
sc3Z '(:WgDV
 
 
B **,,C		0$	7	7 * *8C==))* * * * * * * * * * * * * * *
sc3Z %Wg&.EFFFw(0GHHH	  H &(+++++s   BB
Bc                      t          dg di          } d}t          j        t          |          5  t	                      }|                     |d           d d d            d S # 1 swxY w Y   d S )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   r}   )r
   r#   r$   r%   r   r'   )rs   r+   r  s      r-   test_json_pos_args_deprecationri  v  s    	C#	$	$B	8  
	#M	=	=	= ! !ii


3   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   %A##A'*A'r5  c                      t          t          dt          gd          t          dt          gd          d          } |                     dd	          }d
}||k    sJ d S )Nr   zint64[pyarrow]rP   r   r6  r  r0   Tr  z"{"a":1,"b":2}
{"a":null,"b":null}
)r
   r   r	   r'   )rs   r,   r)   s      r-   test_to_json_ea_nullrk    s}     
B'7888Bw///	
 	

 
B ZZyZ55FH Xr9   c                      d} t          t          |           d          j        }t          d          }t	          j        ||d           d S )Nz#
{"a": 1, "b": 2}
{"a": 3, "b": 4}
Tr   r   )exact)r   r   rV   r   r#   r  )r^   r,   r)   s      r-   test_read_json_lines_rangeindexrn    sO    D x~~T2228F!}}H&($777777r9   )5r  r   decimalr   r/  r   r   r0  r7  r[  r  rP  r?   r   pandas._configr   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsr,  pandasr[   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;   rc  re  rg  ri  
skip_if_nork  rn  r   r9   r-   <module>r|     s~                        				 



       5 5 5 5 5 5       ) ) ) ) ) ) ) ) )    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
              K J J J J J & & & & & &*0 *0 *0Z, , ,r5 r5 r5 r5 r5 r5 r5 r5j?% % %6 6 6, , ,"	! 	! 	! y  8 8 8 8 8r9   