
    .iQ                    H   d dl 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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% d	 Z&d
 Z' G d d      Z(d Z)d Z*d Z+ ejX                  d      d        Z-d Z.d Z/y)    N)	timedelta)BytesIOStringIO)using_string_dtype)IS64)Pandas4Warning)	NA	DataFrameDatetimeIndexIndex
RangeIndexSeries	Timestamp
date_range	read_json)ujson_dumpsc                     d} d}t        j                  t        |      5  t        | d       d d d        t        j                  t        |      5  t        dd       d d d        t        j                  t        |      5  t        dd       d d d        t        j                  t        |      5  t        dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   SxY w# 1 sw Y   y xY w)	Nz[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}z.* does not existmatchFlines!{"a": 1, "b": 2}
{"b":2, "a" :1}
T4{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"}
pytestraisesFileNotFoundErrorr   )jsonlmsgs     ^/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/json/test_pandas.pytest_literal_json_raisesr!   &   s    E
 C	(	4 &%u%& 
(	4 E7tDE 
(	4 
K	

 
(	4 F7uEF F& &E E
 
F Fs/   C
CC"3C.
CC"C+.C7c                     |dv r|j                  d      }|dk(  r#t        t        |j                              |_        t	        j
                  | |       y )N)recordsvaluesTdropr$   )reset_indexrangelencolumnstmassert_frame_equal)resultexpectedorients      r    assert_json_roundtrip_equalr0   ?   sN    &&''T'2 X%5%5!67&(+    c                   h    e Zd Zej                  d        Zej                  d        Zd Zej                  j                  dg d      d        Z
ej                  j                  dddg      d	        Zej                  j                  dd
dg      ej                  j                  dddgddggddgddggddgddgg ed      j                  d      dg ed      j                  d      dggg      d               Zej                  j                  dg d      d        Zd Zej                  j                  ddeg      ej                  j                  d d!dg      d"               Zej                  j                  ddej(                  g      ej                  j                  d d!dg      d#               Zej                  j                  dd$ej,                  ed%g      ej                  j                  d d!dg      d&               Zej                  j                  d d!dg      d'        Zej                  j                  d d!dg      d(        Zej                  j                  d)d$ ej6                  d* ej:                  d*      +      g      ej                  j                  d d!dg      d,               Zej                  j                  d d!dg      d-        Zej                  jA                  d.e!/      ej                  j                  dd0d0gd1d2ggd0d3gd1d1ggd0d0gd1d1ggg      d4               Z"ej                  j                  d5d6d7d8jG                  d9g      d
fd:d;g      d<        Z$ej                  j                  dd!dg      ej                  j                  d d!dg      d=               Z%ej                  j                  dd!dg      d>        Z&ej                  j                  d?ejN                  ejN                   g      ej                  j                  dd!dg      d@               Z(ej                  jS                  e* dAB      ej                  j                  dCg dD      dE               Z+dF Z,dG Z-dH Z.dI Z/dJ Z0dK Z1dL Z2dM Z3dN Z4dO Z5dP Z6dQ Z7ej                  j                  ddd$g      dR        Z8dS Z9ej                  j                  d)d$ ej6                  d* ej:                  d*      +      g      dT        Z:ej                  j                  dej,                  eg      dU        Z;dV Z<dW Z=dX Z>ej                  j                  d)d$ ej6                  d* ej:                  d*      +      g      ej                  j                  dYd! e?dZgd[\      fd e?d]g      fg      d^               Z@d_ ZAd` ZBda ZCdb ZDdc ZEdd ZFej                  j                  dedfdgg      ej                  j                  dhd!dg      ej                  j                  dieGj                  eGj                  eg      dj                      ZIej                  j                  dkg dl      dm        ZJej                  j                  dng do      dp        ZKdq ZLej                  j                  dng do      dr        ZMds ZNdt ZOej                  j                  du ePg dv ej                  d      dw      d$f ePdxg dyi      d$f ePg dv eRj                   ej                  d      dz{      dw      eTf ePdx eRj                  g d|      i      eTfg      d}        ZVej                  j                  d)d$ ej6                  d* ej:                  d*      +      g      ej                  j                  d~g d      d               ZWd ZXd ZYd ZZej                  j                  ej                  j                  d               Z]d Z^d Z_d Z`ej                  j                  dhd!dg      ej                  j                  dedgdfg      ej                  j                  deRj                  ebg      d                      Zcej                  j                  dhd!dg      ej                  j                  deRj                  ebg      d               Zdd Zed Zfd Zgd Zhd Zid Zjd Zkej                  j                  d ed       edd       ed      g      d        Zld Zmej                  j                  d enddd       endddd       enddd      g      d        Zod Zpd Zqej                  j                  ej                  j                  ej                  d                      Zsd Ztd Zuej                  j                  devj                  dz   evj                  dz    g      d        Zxej                  j                  dddg      d        Zyd Zzd Z{ej                  jA                  de|/      ej                  j                  dg dg dg dg dg dg dg dej                  dddgdej                  dddgg	      ej                  j                  dde~g      d                      Zd Zej                  j                  dd$ddgddgddgddgddgg      ej                  j                  dddgddgddgg      dń               ZdƄ Zej                  j                  dg dǢ      dȄ        ZdɄ Zej                  j                  dd!eedʜg      d˄        Zej                  j                  dg d̢      d̈́        Zd΄ Zej                  j                  d ePddgddggddgҫ      ddgddgddggdӜf ePddgddggddgҫ      j                  dԫ      ddgddgddggdӜf ePd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֢dx׫      dxg d֢d؜f e?g d֢dx׫      j                  dԫ      dxg d֢d؜f e?ddgdxddgddgg٫      dxddgd؜fg      dڄ        Zej                  j                  d ePddgddggddgҫ       ePddgddggddgҫ      j                  dԫ       ePddgddggddgddgddggի       e?g d֢dx׫       e?g d֢dx׫      j                  dԫ       e?ddgdxddgddgg٫      g      dۄ        Zej                  j                  dddg      d܄        Zej                  j                  dddg      dބ        Zej                  j                  dd
dg      ej                  j                  dd!dg      d               Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zej                  j                  ddd ej6                  d
dej                  jA                  dB      +       ej6                  ddej                  jA                  dB      +      g      d        Zej                  j                  dg d      d        Zej                  jS                   e       dB      ej                  j                  dg d      d               Zd Zd Zd Zd Zej                  j                  ej                  j                  d               Zd Zd  Zd Zd Zej                  j                  d e?dddd      df e?d	d
dd      df ePddgddgg      df ePddgddgg      dfg      d        Zd Zd Z ej:                  d*      ej                  jG                  d      d               Zej                  j                  dg d      d        Zd Zy$(  TestPandasContainerc                     t        dt        j                  dt        j                        z  t	        ddd      d      }|j
                  j                  d       |_        |S )	Ng?
   dtype
2020-01-01nsperiodsunitts)indexname)r   nparangefloat64r   r>   
_with_freq)selfsers     r    datetime_seriesz#TestPandasContainer.datetime_seriesH   sQ     "))Bbjj11\2DA

 II((.	
r1   c           
          t        t        j                  j                  d      j	                  d      t        t        d            t        dddd      	      }|j                  j                  d       |_        |S )
N   )      ABCD
2000-01-01rI   Br9   r;   freqr<   r*   r>   )
r
   r@   randomdefault_rngstandard_normalr   listr   r>   rC   rD   dfs     r    datetime_framez"TestPandasContainer.datetime_frameT   sb     II!!!$44W=$v,'\2CdK

 88&&t,	r1   c                     t        ddgddggddgddg	      }t        |j                  |
            }t        ||
      }|j	                         }t        |||       y )Nabcdz	index " 1z	index / 2za \ bzy / zr>   r*   r/   r
   r   to_jsonr   copyr0   rD   r/   rV   datar-   r.   s         r     test_frame_double_encoded_labelsz4TestPandasContainer.test_frame_double_encoded_labels`   sf    3Z#s$,w'
 

&
124/779#FHf=r1   r/   )splitr#   r$   c                     t        ddgddggddgddg      }t        |j                  |	            }t        ||	      }|j	                         }t        |||       y )
NrY   rZ   r[   r\      xyr]   r^   r_   rb   s         r    test_frame_non_unique_indexz/TestPandasContainer.test_frame_non_unique_indexl   s]    c
S#J/1vSzR

&
124/779#FHf=r1   r>   r*   c                     t        ddgddggddgddg      }d	| d
}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)NrY   rZ   r[   r\   rg   rh   ri   r]   z+DataFrame index must be unique for orient=''r   r^   r
   r   r   
ValueErrorr`   rD   r/   rV   r   s       r    "test_frame_non_unique_index_raisesz6TestPandasContainer.test_frame_non_unique_index_raisesu   sd    c
S#J/1vSzR;F81E]]:S1 	&JJfJ%	& 	& 	&   AAre   r$   rc   rY   rZ   r[   r\         ?      @g      @g      @rg      20130101s20130102c                    t        |ddgddg      }d }d}|j                  d d df   j                  dk(  rt        }t	        j
                  ||      5  t        t        |j                  |	            |dg
      }d d d        |dk(  rt        |      }|j                  d d df   j                  dk(  r|j                  d d df   j                  }	|j                  d|	j                  d      j                  t        j                               nC|dk(  r>|}ddg|_        |d   j                  j                   dk(  r|d   j                  d      |d<   t	        j"                         y # 1 sw Y   xY w)Nrg   rH   rh   r]   |The default 'epoch' date format is deprecated and will be removed in a future version, please use 'iso' date format instead.r   zdatetime64[s]r   r^   )r/   convert_datesr$   msre   zx.1MM8[ms])r
   ilocr7   r   r+   assert_produces_warningr   r   r`   _valuesisetitemas_unitastyper@   int64r*   kindr,   )
rD   r/   rc   requestrV   expected_warningr   r-   r.   dtas
             r    test_frame_non_unique_columnsz1TestPandasContainer.test_frame_non_unique_columns|   sa    tAq6C:>I 	 771a4=/1-''(8D 	623FSVRWF	 X H}}QT"((O; mmAqD)11!!!S[[%6%=%=bhh%GHwH #U|H}""''3. ( 4 4X >
fh/%	 	s   )E++E4)r>   r*   r#   c                     t        ddgddggddgddg      }d	| d
}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)NrY   rZ   r[   r\   rg   rH   rh   r]   z-DataFrame columns must be unique for orient='rl   r   r^   rm   ro   s       r    $test_frame_non_unique_columns_raisesz8TestPandasContainer.test_frame_non_unique_columns_raises   sd    c
S#J/1vSzR=fXQG]]:S1 	&JJfJ%	& 	& 	&rq   c                 N    |j                         |j                  d      k(  sJ y )Nr*   r^   r`   )rD   float_frames     r    test_frame_default_orientz-TestPandasContainer.test_frame_default_orient   s'    ""$(;(;9(;(MMMMr1   r7   Fconvert_axesTc                 v    t        |j                  |            }t        ||||      }|}t        |||       y Nr^   r/   r   r7   r   r`   r   r0   )rD   r/   r   r7   r   rc   r-   r.   s           r    test_roundtrip_simplez)TestPandasContainer.test_roundtrip_simple   s>     ++6+:;4\QVW#FHf=r1   c                 v    t        |j                  |            }t        ||||      }|}t        |||       y r   r   )rD   r/   r   r7   	int_framerc   r-   r.   s           r    test_roundtrip_intframez+TestPandasContainer.test_roundtrip_intframe   s>     	)))894\QVW#FHf=r1   NU3c           
      H   t        t        j                  d      t        d      D cg c]  }t	        |       c}t        d      D cg c]  }t	        |       c}|      }t        |j                  |            }t        ||||      }|j                         }|s|j                  t        j                        }|ra|dv r]|j                  j                  t        j                        |_        |j                  j                  t        j                        |_        nk|dk(  r1|r/|j                  j                  t        j                        |_        n5|r3|d	k(  r.|j                  j                  t        j                        |_        t        |||       y c c}w c c}w )
N)   rJ   rJ   r   )r*   r>   r7   r^   r   r]   r#   re   )r
   r@   zerosr(   strr   r`   r   ra   r   r   r*   r>   r0   )	rD   r/   r   r7   irV   rc   r-   r.   s	            r    test_roundtrip_str_axesz+TestPandasContainer.test_roundtrip_str_axes   s7    HHX%*1X.SV.#(:.a3q6.	
 

&
124\QVW779rxx0H V';;'//66rxx@H%^^22288<HNy \'//66rxx@Hf/'//66rxx@H#FHf=3 /.s   F
Fc                    |dv r3|j                  t        j                  j                  d| d             t	        t        d            D ci c]4  \  }}|t        j                  j                  |      j                  d      6 }}}dgdz  d	gdz  z   d
gdz  z   dgdz  z   }t        t        |            |d<   t        j                  dd      |d<   t        |t        j                  |d            }	t        |	j!                  |            }t#        |||      }
|	j%                         }|j&                  j)                  |st*        nd      |_        d |j&                  _        t/        |
||       y c c}}w )Nr]   z.Can't have duplicate index values for orient 'z')reasonrK   rI   bah   barbazfoo   Er   r6   sortr?   r>   r^   r/   r   r   )applymarkerr   markxfail	enumeraterT   r@   rQ   rR   rS   reversedrA   r
   pdCategoricalIndexr   r`   r   ra   r>   r   r   r?   r0   )rD   r   r/   r   using_infer_stringr   r[   rc   catcategorical_framer-   r.   s               r    test_roundtrip_categoricalz.TestPandasContainer.test_roundtrip_categorical   sj   
 ))!!KF8SUV "  "$v,/
1 ryy$$Q'77;;
 
 gkUGaK'5'A+5"D#'S	yy73V%d"2E2EcPS2TU)111@A4\J$))+!..)Cu
 ##FHf=!
s   9E9c                 ,   t               }t        |j                  |            }t        |||      }|dk(  r't	        g |rt
        nt              }t        ||      }n|dv rt               }n|j                         }t        j                  ||       y )Nr^   r   re   r6   r]   )
r
   r   r`   r   r   floatobjectra   r+   r,   )rD   r/   r   empty_framerc   r-   idxr.   s           r    test_roundtrip_emptyz(TestPandasContainer.test_roundtrip_empty  s    k++6+:;4\JWL5fFC sC8H++ {H"'')H
fh/r1   dtype_backendpyarrow)marksc                    |j                         }|*t        |j                        j                  |      |_        t	        |j                  |            }t        |||      }|sN|j                  j                  t        j                        dz  }|dk7  r|j                  t              }||_        n |j                  j                  d      |_        t        |||       y )Nr   r^   r   i@B re   r{   )ra   r   r>   convert_dtypesr   r`   r   viewr@   r   r   r   r   r0   )	rD   r/   r   r   rW   r.   rc   r-   r   s	            r    test_roundtrip_timestampz,TestPandasContainer.test_roundtrip_timestamp  s     "&&($#).*>*>#?#N#N+ $O $N  ..f.=>4\J..%%bhh/7:C jjo HN%^^33D9HN#FHf=r1   c                 ^   t        g d      }g dg dg dg dd}t        ||      }t        |j                  |            }t	        |||	      }|j                         } |j                  di |j                  d
      j                  t        j                        }t        |||       y )N)rY   rZ   r[   r\   e)              ?       @      @      @)r   r   r   r   r   )foo1foo2foo3foo4foo5)TFTFTArM   CDrc   r>   r^   r   number )r   r
   r   r`   r   ra   assignselect_dtypesr   r@   r   r0   )	rD   r/   r   r>   r$   rV   rc   r-   r.   s	            r    test_roundtrip_mixedz(TestPandasContainer.test_roundtrip_mixed.  s    /0**91	
 F%0

&
124\J779"8??WX%;%;H%E%L%LRXX%VW#FHf=r1   z9#50456 Column multiindex is stored and loaded differently)r   r   2022JANFEB2023c                     t        ddgddggt        j                  j                  |            }t	        |j                  d            }t        |d      }t        j                  ||       y )Nrg   rH   rt   rJ   r*   re   r^   )	r
   r   
MultiIndexfrom_arraysr   r`   r   r+   r,   )rD   r*   rV   rc   r-   s        r    test_roundtrip_multiindexz-TestPandasContainer.test_roundtrip_multiindexB  sc     VaVMM--g6
 

'
2340
fb)r1   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 columnsre   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyre   c                     t        j                  t        |      5  t        t	        |      |       d d d        y # 1 sw Y   y xY w)Nr   r^   )r   r   rn   r   r   )rD   rc   r   r/   s       r    $test_frame_from_json_bad_data_raisesz8TestPandasContainer.test_frame_from_json_bad_data_raisesW  s6    F ]]:S1 	5htnV4	5 	5 	5s	   <Ac                 x   t        ddgg dg      }t        t        |j                  |            |||      }t	        j
                  |j                  d         sJ t        ddgg d	g      }t        t        |j                  |            |||      }t	        j
                  |j                  d         sJ y )
Nrg   rH   rJ   r      r^   r   r   rH   12)456)r
   r   r   r`   r@   isnanr~   )rD   r/   r   r7   num_dfr-   obj_dfs          r    !test_frame_from_json_missing_dataz5TestPandasContainer.test_frame_from_json_missing_data}  s     QFI./V^^6^23%	
 xxD)***S#J89V^^6^23%	
 xxD)***r1   c                     t        t        d      |      }t        t        j                  g|st
        nd       }t        j                  ||       y )Nz[null]r6   )r   r   r
   r@   nanr   r+   r,   )rD   r7   r-   r.   s       r    (test_frame_read_json_dtype_missing_valuez<TestPandasContainer.test_frame_read_json_dtype_missing_value  s;     8H-U;bffX5VdK
fh/r1   infc                     t        ddgg dg      }||j                  d<   t        |j                               }t	        ||      }t        j                  |j                  d         sJ y )Nrg   rH   r   r   r6   )r
   locr   r`   r   r@   r   r~   )rD   r   r7   rV   rc   r-   s         r    test_frame_infinityz'TestPandasContainer.test_frame_infinity  s[    
 A	*+t

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

%4tBII7
fb5Ar1   c                 X    t        dg ig       }|j                  d      }d}||k(  sJ y )Ntestr   r*   r^   z{"test":{}}r  rD   rV   r-   r.   s       r    test_frame_empty_to_jsonz,TestPandasContainer.test_frame_empty_to_json  s5    |2.9- !!!r1   c                    t        ddg      }|d   j                  d      |d<   |j                  sJ |j                         }t	        j
                  t        t        |      t        |j                              |d       y )Nr  r  r   i8r6   Fr  )
r
   r   r  r`   r+   r,   r   r   r  r  )rD   rV   rc   s      r    test_frame_empty_mixedtypez.TestPandasContainer.test_frame_empty_mixedtype  sl    u~.uI$$T*5	    zz|
htnDO<"	
r1   c                    g dg dg dg dg}t        |t        d      g d      }|j                  sJ |j                         }dD ]A  }t	        |j                  |	            }t        ||d
      }t        j                  ||       C t        t        |            |_        t	        |j                  d	            }t        |dd
      }t        j                  ||       t        |j                  d         |_        t	        |j                  d	            }t        |dd
      }t        j                  ||       y )N)r5   rg   r   g?g{Gz?)   rH   r   g?g{Gz?)rI   rt   r   g333333?gQ?)(   rJ   quxg?g{Gz?abcd)1st2nd3rd4th5thr]   re   r>   r*   r^   Fr   r#   rg   r$   )r
   rT   r  ra   r   r`   r   r+   r,   r   r)   r>   shaper*   )rD   valsrV   rightr/   inplefts          r    test_frame_mixedtype_orientz/TestPandasContainer.test_frame_mixedtype_orient  s   %%%%	
 V.Q
     	3 	/F2::V:45CSeDD!!$.	/
 !R)rzzz34YUC
dE*"288A;/rzzz23XEB
dE*r1   c                 h   t        ddd      }t        t        j                  |      d       }t	        g dg dg dg d	g d
gg d|      }t        d      j                  d      |d<   t        d      |j                  d|j                  j                  d      f<   |d   |d<   t        j                  |j                  d|j                  j                  d      f<    |ddd      }t        j                  j                  |d      }t        |      }|j!                         }|d   j"                  j                  d      |d<   |d   j"                  j                  d      |d<   |j$                  j                  d      |_        t'        j(                  ||       t        j                  j                  |d      }t        |      }	|j+                  dgd      }
|
d   j"                  j                  d      |
d<   |
j$                  j                  d      |
_        t'        j(                  |	|
d       y )Nz
2000-01-03z
2000-01-07r9   r<   rO   )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   rP   z19920106 18:21:32.12dateru   rt   modifiedrg   iojsonrc   ztsframe_v012.jsonztsframe_iso_v012.json)axisusFcheck_column_type)r   r   r@   asarrayr
   r   r   r~   r*   get_locr   NaTospathjoinr   ra   dtr>   r+   r,   r&   )rD   datapathdtirV   dirpathv12_jsonr-   r.   v12_iso_json
result_isoexpected_isos              r    test_v12_compatz#TestPandasContainer.test_v12_compat  s   |$?BJJsO$7AC?BA )

 56>>tD6
1::1F2::%%f--.F:57VV2::%%j1124077<<)<=8$779#F+..66t<'
366>>tD!//5
fh/ww||G-DE|,
ww
|!w4+F366>>tDV)//77=
j,%Pr1   c           	         t        dddd      }t        t        |      d       }t        g dg dg d	g d
g dg dd|      }|j                  j                  |st        j                  nd      |_        t        |j                  d            }t        |d      }|j                  j                  d      |_        t        j                  ||dddd       y )N20000101r5   hr9   rN   r0  )
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_2r   r   re   r^   r{   T)r  r8  	by_blockscheck_exact)r   r   rT   r
   r*   r   r@   str_r   r`   r   r>   r   r+   r,   )rD   r   r>   df_mixedrc   df_roundtrips         r    test_blocks_compat_GH9037z-TestPandasContainer.test_blocks_compat_GH9037  s    :r$Gd5k5{IT WL
^ $++22-BGG5
 (((89 g6!//5
!"	
r1   c                 Z    G d d      }d} ||      }t        d|j                  gi      }|j                         d| dk(  sJ t        d|gi      }d}t        j                  t
        |      5  |j                          d d d        t        |gd	gd
ddg      }t        j                  t
        |      5  |j                          d d d        |j                  t              }d| d}	||	k(  sJ |j                  t              d| dk(  sJ y # 1 sw Y   xY w# 1 sw Y   XxY w)Nc                        e Zd ZddZdefdZy)FTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingreturnNc                 F    || _         t        j                  |      | _        y N)hexedbytesfromhexbinary)rD   rq  s     r    __init__zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__  s    "
#mmE2r1   c                     | j                   S rp  )rq  rD   s    r    __str__zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__  s    zz!r1   rn  N)__name__
__module____qualname__ru  r   rx  r   r1   r    BinaryThingrm    s    3" "r1   r}  574b4454ba8c5eb4f98a8f45r   z{"A":{"0":""}}z6Unsupported UTF-8 sequence length when encoding stringr   rg   r   rM   rM   r   default_handlerz"},"B":{"0":1}})r
   rq  r`   r   r   OverflowErrorr   )
rD   r}  rq  binthingdf_printabledf_nonprintabler   rh  r-   r.   s
             r    test_frame_nonprintable_bytesz1TestPandasContainer.test_frame_nonprintable_bytes  sD   	" 	" +u% !#'7!89##%=u)EEEE $S8*$56F]]=4 	&##%	& H:QC83*M]]=4 		 !(((="5'/!!!S1ug%89:	
:	& 	&
	 	s   1D9D!D!D*c                 h    t        ddz  dgddgi      j                         }dddz   d}||k(  sJ y )Nr   i rg   r   i9  {"z":{"0":1},"foo":{"0":1337}}r  rD   r-   r.   s      r    test_label_overflowz'TestPandasContainer.test_label_overflow  sH    EFNQC?@HHJ((HI!!!r1   c           
         t        ddgddg      }d}t        j                  t        |      5  |j	                  d       d d d        t        j                  |t        t        |j	                  d	            d	d
             t        t        |j	                  d            dd
      }t        j                  |j                  |j                         y # 1 sw Y   xY w)NrY   rZ   rg   r   z.Series index must be unique for orient='index'r   r>   r^   re   series)r/   typr#   )r   r   r   rn   r`   r+   assert_series_equalr   r   assert_equalr$   )rD   rv   r   unserializeds       r    test_series_non_unique_indexz0TestPandasContainer.test_series_non_unique_index  s    C:aV,>]]:S1 	&IIWI%	& 	'23G	
 !QYYiY01)
 	,"5"56	& 	&s   CC c                 N    |j                         |j                  d      k(  sJ y )Nr>   r^   r   )rD   string_seriess     r    test_series_default_orientz.TestPandasContainer.test_series_default_orient  s'    $$&-*?*?w*?*OOOOr1   c                    t        |j                  |            }t        |d|      }|}|r$|dv r |j                  j	                  d      |_        |dv r|j                  d      }|d	k7  rd |_        t        j                  ||       y )
Nr^   r  r  r/   r'  r   r$   r#   Tr%   re   )	r   r`   r   r>   r   r'   r?   r+   r  )rD   r/   r  r   rc   r-   r.   s          r    test_series_roundtrip_simplez0TestPandasContainer.test_series_roundtrip_simple  s    --V-<=4Xf= &,I"I%^^2259HN**+++6HW HM
vx0r1   c                    t        |j                  |            }t        |d||      }|}|dv r|j                  d      }|dk7  rd |_        t               r|j                  d      }t        j                  ||       y )	Nr^   r  )r  r/   r7   r  Tr%   re   r   )	r   r`   r   r'   r?   r   r   r+   r  )rD   r/   r7   object_seriesrc   r-   r.   s          r    test_series_roundtrip_objectz0TestPandasContainer.test_series_roundtrip_object  s~    --V-<=4XfEJ **+++6HW HMu-H
vx0r1   c                 B   t        g g t        j                        }t        |j	                  |            }t        |d|      }|j                  d      }|dv r.|j                  j                  t        j                        |_        t        j                  ||       y )Nr>   r7   r^   r  r  Tr%   re   )r   r@   rB   r   r`   r   r'   r>   r   r+   r  )rD   r/   empty_seriesrc   r-   r.   s         r    test_series_roundtrip_emptyz/TestPandasContainer.test_series_roundtrip_empty  s    b"**=,,F,;<4Xf=+++6g%^^222::>HN
vx0r1   c                    |j                         }|*t        |j                        j                  |      |_        t	        |j                  |            }t        |d|      }|dv r|j                  d      }n |j                  j                  d      |_        |d	k7  rd |_	        t        j                  ||       y )
Nr   r^   r  r  r  Tr%   r{   re   )ra   r   r>   r   r   r`   r   r'   r   r?   r+   r  )rD   r   r/   rF   r.   rc   r-   s          r     test_series_roundtrip_timeseriesz4TestPandasContainer.test_series_roundtrip_timeseries  s     #'')$$*?+@+@$A$P$P+ %Q %O! //v/>?4Xf=**+++6H%^^33D9HNW HM
vx0r1   c                     t        t        d      g d      }t        |j                  |            }t	        |d|      }|j                         }|dv r|j                  d	      }t        j                  ||       y )
Nr   rY   rZ   r[   r\   r   fr   r^   r  r  r  Tr%   )	r   r(   r   r`   r   ra   r'   r+   r  )rD   r/   r7   rv   rc   r-   r.   s          r    test_series_roundtrip_numericz1TestPandasContainer.test_series_roundtrip_numeric   sm    58#AB			014Xf=668**+++6H
vx0r1   c                     t        g d      }d}t        j                  t        |      5  |j	                  d       d d d        y # 1 sw Y   y xY wr  )r   r   r   rn   r`   )rD   rv   r   s      r    test_series_to_json_exceptz.TestPandasContainer.test_series_to_json_except  sB    9;]]:S1 	(IIYI'	( 	( 	(r  c                     t        g d      }t        t        |j                               dd      }t	        j
                  ||d       y )N=
ףp=@r  r  r  T)r  precise_floatFr  )r   r   r   r`   r+   r  rD   rv   r-   s      r    #test_series_from_json_precise_floatz7TestPandasContainer.test_series_from_json_precise_float  s8    %&8AIIK0hdS
vq5Ar1   c                     t        g d      }t        t        |j                               dt        j
                        }t        dgdz        }t        j                  ||       y )Nr  r  r  r7   rJ   rt   )r   r   r   r`   r@   r   r+   r  )rD   rv   r-   r.   s       r    test_series_with_dtypez*TestPandasContainer.test_series_with_dtype  sI    %&8AIIK0hbhhO1#'?
vx0r1   zdtype,expectedrL   datetime64[ms]r6   l    ,Uqc                 &   t        dgd      }||j                  |      }d}t        j                  t        |      5  t        |j                               }d d d        t        d|      }t        j                  ||       y # 1 sw Y   .xY w)	NrL   datetime64[ns]r6   r   ry   r   r  r  )	r   r   r+   r   r   r   r`   r   r  )rD   r7   r.   r   rv   r   rc   r-   s           r    test_series_with_dtype_datetimez3TestPandasContainer.test_series_with_dtype_datetime  s     L>)9:$  } =AI 	 ''cB 	)AIIK(D	)4XU;
vx0	) 	)s    BBc                     t        g dg dg      }t        t        |j                               d      }t	        j
                  ||       y )Nr  T)r  r
   r   r   r`   r+   r,   rD   rV   r-   s      r    "test_frame_from_json_precise_floatz6TestPandasContainer.test_frame_from_json_precise_float5  s:    *,>?@8BJJL1F
fb)r1   c                     t        t        d      g dd      }t        t        |j	                               d      }t        j                  ||       y )Nr   r  r   r  r  r  )r   r(   r   r   r`   r+   r  r  s      r    test_typzTestPandasContainer.test_typ:  s<    58#AQ8AIIK0h?
vq)r1   c                 2   t        g dg dg      }t        t        |j                                     }t	        j
                  ||       t        g dg ddg d      }t        t        |j                                     }t	        j
                  ||       y )Nr	  r   rY   rZ   )r   rM   r   r   r  r  s      r    test_reconstruction_indexz-TestPandasContainer.test_reconstruction_index?  sl    	9-.8BJJL12
fb)YY7O8BJJL12
fb)r1   c                 P    |||fD ]  }|j                  |       t        |         y rp  )r`   r   )rD   r   r   rW   	temp_filerV   s         r    	test_pathzTestPandasContainer.test_pathH  s,    	>: 	!BJJy!i 	!r1   c                    t        |j                               }t        |      }|j                         }|j                  j                  d      |_        t        j                  ||       t        |j                               }t        |d      }|j                         }|j                  j                  d      |_        t        j                  ||d       |j                  J y )Nr{   r  r  F)check_names)
r   r`   r   ra   r>   r   r+   r,   r  r?   )rD   rF   rW   r4  r-   r.   s         r    test_axis_datesz#TestPandasContainer.test_axis_datesM  s    ..014!&&(!//5
fh/ //124X."'')!//5
vxUC{{"""r1   c                    |}t        d      j                  d      |d<   d}t        j                  t        |      5  t        |j                               }d d d        t              }|j                         }|d   j                  j                  d      |d<   |j                  j                  d      |_
        t        j                  ||       d|d<   t        j                  t        |      5  t        |j                  d	            }d d d        t        |d
      }|j                         }|d   j                  j                  d      |d<   |d   j                  d      |d<   t        j                  ||       t        t        d      j                  d      |j                        }t        j                  t        |      5  t        |j                               }d d d        t        |d      }|j                  j                  d      }|j                  j                  d      |_
        t        j                   ||       y # 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   xY w)Nru   r9   r1  ry   r   r{   r   r   	date_unitFrz   r  r   r   r  r  )r   r   r+   r   r   r   r`   r   ra   r?  r>   r,   r$   r   r   r   r  )	rD   rF   rW   rV   r   r4  r-   r.   r=   s	            r    test_convert_datesz&TestPandasContainer.test_convert_dates]  s   z*22486
I 	 ''cB 	*BJJL)D	*4779#F+..66t<!//5
fh/5	''cB 	8BJJJ67D	8 4u5779#F+2277="5/009
fh/ Ij)11$7?T?TU''cB 	*BJJL)D	*4X.55==&!//5
vx03	* 	*	8 	8	* 	*s#   I1I
I%II"%I.date_formatepochiso	as_objectdate_typc                     |ddd      t         j                  g}|r|j                  d       t        ||      }|sK|j	                  d      }t        |j                  t              r |j                  j                  d      |_        d }|dk(  r	d	}t        }nd
}d}t        j                  ||      5  |j                  |      }	d d d        |r|j                  dd      }	|k(  sJ y # 1 sw Y   %xY w)Ni  rg   )yearmonthdayrY   r   zM8[ns]r9   r  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}p'epoch' date format is deprecated and will be removed in a future version, please use 'iso' date format instead.r   r  }	,"a":"a"})r   r;  appendr   r   
isinstancer>   r   r   r   r+   r   r`   replace)
rD   r  r  r  rc   rE   r   r.   r   r-   s
             r    test_date_index_and_valuesz.TestPandasContainer.test_date_index_and_values  s     d!3RVV<KKT&**X&C#))]3II--d3	'!DH- T 
= 	 ''(8D 	:[[[[9F	: ''[9H!!!	: 	:s   4C++C4
infer_word)
trade_timer1  datetimesold_atr2  	timestamp
timestampsc                    dd|diddig}t        dt        d      gdt        j                  ggd|g      }||   j	                  d      ||<   t        t        t        |                  d|g   }t        j                  ||       y )Nidrg   l    $ArH   z
2002-11-08r   r}   )
r
   r   r   r;  r   r   r   r   r+   r,   )rD   r  rc   r.   r-   s        r    test_convert_dates_inferz,TestPandasContainer.test_convert_dates_infer  s     q*m4tQi@<()Arvv;7$
AS
  (
3::8D8K$567z8JK
fh/r1   zdate,date_unit))20130101 20:43:42.123N)20130101 20:43:42rv   )r  r{   )z20130101 20:43:42.123456r6  )z20130101 20:43:42.123456789r9   c                 r   |}t        |      j                  d      |d<   t        j                  |j                  d|j
                  j                  d      f<   t        j                  |j                  d|j
                  j                  d      f<   |r|j                  d|      }n|j                  d      }t        t        |            }|j                         }|dk7  rA|d   j                  j                  d      |d<   |j                  j                  d      |_        t        j                  ||       y )	Nr9   r1  rg   r   r  r  r  r  r6  )r   r   r   r;  r~   r*   r:  r`   r   r   ra   r?  r>   r+   r,   )rD   r1  r  rW   rV   r4  r-   r.   s           r    test_date_format_framez*TestPandasContainer.test_date_format_frame  s     t_,,T26
132::%%f--.132::%%f--.::%9:ED::%:0D8D>*779'/22::4@HV%^^33D9HN
fh/r1   c                     |}d}t        j                  t        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)N*Invalid value 'foo' for option 'date_unit'r   r  r   r  )r   r   rn   r`   )rD   rW   rV   r   s       r    test_date_format_frame_raisesz1TestPandasContainer.test_date_format_frame_raises  s?    :]]:S1 	;JJ5EJ:	; 	; 	;s	   =Ac                    t        t        |      |j                        }t        j                  |j
                  d<   t        j                  |j
                  d<   |r|j                  d|      }n|j                  d      }t        t        |      d      }|j                         }|d	k7  r |j                  j                  d
      |_        t        j                  ||       y )Nr   rg   r   r  r  r  r  r  r9   r6  )r   r   r>   r   r;  r~   r`   r   r   ra   r   r+   r  )rD   r1  r  rF   r=   r4  r-   r.   s           r    test_date_format_seriesz+TestPandasContainer.test_date_format_series  s     IdO?+@+@AVV
VV
::%9:ED::%:0D8D>x8779%^^33D9HN
vx0r1   c                     t        t        d      |j                        }d}t        j                  t
        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)Nr  r   r  r   r  r   r  )r   r   r>   r   r   rn   r`   )rD   rF   r=   r   s       r    test_date_format_series_raisesz2TestPandasContainer.test_date_format_series_raises  sR    I56o>S>ST:]]:S1 	;JJ5EJ:	; 	; 	;s   AA$c                    |}t        d      j                  d      |d<   |j                  j                  d      }t        d      |j                  d|f<   t        d      |j                  d|f<   t
        j                  |j                  d|f<   d	}t        j                  t        |
      5  |j                  d|      }d d d        |j                         }|d   j                  j                  |      |d<   |j                  j                  |      |_        t        t              d       }t        j                   ||       y # 1 sw Y   xY w)Nr  r9   r1  z19710101 20:43:42rg   z21460101 20:43:42rH   rJ   r  r   r  r  r  )r   r   r*   r:  r~   r   r;  r+   r   r   r`   ra   r?  r>   r   r   r,   )	rD   r<   rW   rV   dlr   r4  r.   r-   s	            r    test_date_unitz"TestPandasContainer.test_date_unit  s$   23;;DA6
ZZ'"#672"#6722= 	 ''cB 	C::'T:BD	C
 779#F+..66t<!//5 8D>T:
fh/	C 	Cs   +EEzdf, warnrY   rZ   r[   r  r   )TFFr   r/  )r8   z
2020-02-01z
2020-03-01c                     d}t        j                  ||      5  |j                          d d d        y # 1 sw Y   y xY w)Nry   r   )r+   r   r`   )rD   rV   warnr   s       r    )test_default_epoch_date_format_deprecatedz=TestPandasContainer.test_default_epoch_date_format_deprecated  s=    ,I 	 ''C8 	JJL	 	 	s   4=r<   )rv   r{   r6  c           	      z   t        t        j                  d|      gd| d      }t        t	        t        j                  d|      gd| d|      t	        t        j                  d|      gt
        |      d      }|j                         }|j                  j                  d      |_        |d	   j                  j                  d      |d	<   |d
   j                  d      |d
<   ||j                  |      }|j                  d|      }t        t        |      d	d
g      }t        j                   ||       y )Nz2023-01-01T11:22:33.123456zdatetime64[]r6   z2022-01-01T11:22:33.123456r7   r>   )r1  date_objr6  r1  r  datetime64[us]r   r  r  r  )r   r@   
datetime64r
   r   r   ra   r>   r   r?  r   r   r`   r   r   r+   r,   )rD   r   r<   r>   rV   r.   r4  r-   s           r    test_iso_non_nano_datetimesz/TestPandasContainer.test_iso_non_nano_datetimes3  s6    ]]7>?vQ'
 ]]#?FG'vQ/
 #]]#?FG 
 779!//5#F+..66t<'
3::;KL$"""?Bzzetz<8D>&*9MN
fh/r1   c                 0    d}t        t        |             y )Nad  {
        "status": "success",
        "data": {
        "posts": [
            {
            "id": 1,
            "title": "A blog post",
            "body": "Some useful content"
            },
            {
            "id": 2,
            "title": "Another blog post",
            "body": "More content"
            }
           ]
          }
        })r   r   )rD   rv   s     r    test_weird_nested_jsonz*TestPandasContainer.test_weird_nested_jsonZ  s    " 	(1+r1   c                 
   t        t        j                  j                  d      j	                  d      t        d            }t        d      |d<   t        d      |d<   d	|d
<   t        ddd      |_	        d}t        j                  t        |      5  t        |j                               }d d d        t        t        j                   t        j"                  d      }t        j$                  ||       y # 1 sw Y   LxY w)NrH   )r   rH   ABr   ru   r1  r   intsTboolsr9   r:   ry   r   )r  r  r6   )r
   r@   rQ   rR   rS   rT   r   r(   r   r>   r+   r   r   r   r`   r   r   bool_r,   )rD   dfj2r   r4  r-   s        r    test_doc_examplez$TestPandasContainer.test_doc_exampleo  s    II!!!$44V<d4j
 !,VQxVW
ADA
I 	 ''cB 	,DLLN+D	,4288'LM
ff-	, 	,s   C99Dc                 D    |dddd      }t        j                  |      }|j                         }t        t	        |            }|j                  |j                  |j                        }|j                  t        j                        }t        j                  ||       y )Nr3  r4  rc   z	teams.csvr]   )r   read_csvr`   r   r   reindexr>   r*   fillnar@   r   r+   r,   )rD   r@  r=  rV   rv   r-   ress          r    test_round_trip_exceptionz-TestPandasContainer.test_round_trip_exception  su    ffk:[[JJL8A;'nn288RZZn@jj 
c2&r1   c                     d}|j                  |       t        |j                  d      }dt        j                  dd      gd	d
gdt        j                  dd      gfD ]  \  }}||   j
                  |k(  rJ  y )Nzw{"created_at": ["2023-06-23T18:21:36Z"], "closed_at": ["2023-06-23T18:21:36"], "updated_at": ["2023-06-23T18:21:36Z"]}
)contentTr  
created_atr6  UTCtz	closed_atr  
updated_at)serve_contentr   urlr   DatetimeTZDtyper7   )rD   
httpserverrc   r-   fieldr7   s         r    test_urlzTestPandasContainer.test_url  s     J   .:>>>2--du=>*+2--du=>
 	0LE5
 %=&&%///	0r1   c                    d }t        t        d      t        d      gd| d      }|j                  d| dk(  sJ d	}t        j                  t
        |
      5  t        t        |j                               d      j                  |      }d d d        t        j                  |j                  d             t        t        d      t        d      gt        ddg      d      }|j                  dk(  sJ t        j                  t
        |
      5  t        t        |j                               d      j                  |      }d d d        t        j                  ||j                  d             t        t        d      t        d      gd      }|d   j                  dk(  sJ t        j                  t
        |
      5  |j                         }d d d        t        t                    j                  |      }t        j                  |j                  d      |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w)Nc                 0    t        j                  | d      S )Nr{   r/  )r   to_timedelta)rh   s    r    <lambda>z4TestPandasContainer.test_timedelta.<locals>.<lambda>  s    booad; r1      r   secondszm8[r  r6   ztimedelta64[ry   r   r  r  zm8[ms]r   rg   m8[ns]r  ztimedelta64[ns])r   r   r7   r+   r   r   r   r   r`   applyr  r   r   r
   r,   )rD   r<   	converterrE   r   r-   framer4  s           r    test_timedeltaz"TestPandasContainer.test_timedelta  s   ;	imYq%9:CvQ-Pyyl4&2222I 	 ''cB 	Wx6HEKKIVF	W
vszz(';<r]Ia011vh
 yy----''cB 	Wx6HEKKIVF	W
vszz(';<9R=)A*>?xPQx~~!2222''cB 	#==?D	#8D>*00;
ell84f=%	W 	W	W 	W	# 	#s$   4H+4H8	I+H58IIc           	          t        t        d      t        d      gddgt        ddd	      d
      }|d   j                  d      |d<   d}t	        j
                  t        |      5  t        |j                  d            }d d d        t              }t        j                  |j                  d      |d<   t        j                  |j                        |d<   t	        j                  ||       y # 1 sw Y   qxY w)Nr   daysr   r!  rg   rH   ru   r9   )startr;   r<   r  rY   r#  ry   r   r  r/  r[   )r
   r   r   r   r+   r   r   r   r`   r   r   r  rY   to_datetimer[   r,   )rD   r&  r   rc   r-   s        r    test_timedelta2z#TestPandasContainer.test_timedelta2  s    R()A*>?Vj!$G
 3Z&&x0c
I 	 ''cB 	;EMMDM9:D	;4oofhhT:snnVXX.s
eV,	; 	;s   (C44C=c                    t        d      }t        d      }t        d||git              }t        dt	        j
                  |      j                  d      j                  |j                  d      j                  gi      }t        |j                  d            }t        |ddi      }t        j                  ||d	       y )
Nr   ru   rY   r6   r9   r  r   Fr  )r   r   r
   r   r   	Timedeltar   _valuer   r`   r   r+   r,   )rD   tdr=   r&  r.   rc   r-   s          r    test_mixed_timedelta_datetimez1TestPandasContainer.test_mixed_timedelta_datetime  s    r]z"3R/82<<#++D188"**T:J:Q:QRS
 564W~6
fhGr1   timedelta_typc                     |d       |d      t         j                  g}|r|j                  d       t        ||      }|s1|j	                  d      }|j
                  j	                  d      |_        d }|dk(  rd}nt        }d	}|r|j                  d
d      }d}t        j                  ||      5  |j                  |      }	d d d        	|k(  sJ y # 1 sw Y   xY w)Nrg   r)  rH   rY   r   r#  r  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r  r  r  r   r  )r   r;  r  r   r   r>   r   r  r+   r   r`   )
rD   r  r  r3  rc   rE   r   r.   r   r-   s
             r    test_timedelta_to_jsonz*TestPandasContainer.test_timedelta_to_json  s    
 1%}!'<bffEKKT&**X&C		((2CI%S   .PH''[9H= 	 ''(8D 	:[[[[9F	:!!!	: 	:s   4CC c                 \    |d      g}t        ||      j                  d      }|j                  j                  d      |_        t        }|r|j                  t              }d }d}t        j                  ||      5  |j                         }d d d        d}|k(  sJ y # 1 sw Y   xY w)N*   )millisecondsr   r#  ry   r   z	{"42":42})r   r   r>   r   r   r+   r   r`   )	rD   r  r3  rc   rE   r  r   r-   r.   s	            r    +test_timedelta_to_json_fractional_precisionz?TestPandasContainer.test_timedelta_to_json_fractional_precision  s     2./T&--h7II$$X.	**V$CDI 	 ''C8 	#[[]F	#!!!	# 	#s   ?B""B+c                     t               }t        dd|gi      }t        ddt        |      gi      }t        t	        |j                  t                          }t        j                  ||d       y )NrY      r  Fr  )r   r
   r   r   r   r`   r+   r,   )rD   r  r&  r.   r-   s        r    test_default_handlerz(TestPandasContainer.test_default_handler  s_    3E
+,cAs5z?348EMM#M$FGH
hGr1   c           	          d }dt        ddt        dd      gt        d      d dgd	d
dg      g}d}t        ||d      |k(  sJ y )Nc                 r    t        | t              rdd| j                  fd| j                  fgS t	        |       S )N)mathjsComplexreim)r  complexrealimagr   )objs    r    defaultzBTestPandasContainer.test_default_handler_indirect.<locals>.default  s4    #w'-chh/?$AQRRs8Or1   	   rg   STRrJ   r   zN/Ar  rY   rZ   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r$   r  r/   )r
   rC  r   r   )rD   rG  df_listr.   s       r    test_default_handler_indirectz1TestPandasContainer.test_default_handler_indirect  sg    	 %B0edE7RSc

1 	
 JhV	
Vr1   c           	          t        ddt        dd      gt        d      d t        dd      gdd	d
g      }d}|j                  t        d      |k(  sJ y )Nrg   gffffff@rJ   rJ  r   g333333?r   r  rY   rZ   r   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r$   rK  )r
   rC  r   r`   r   )rD   rV   r.   s      r    ,test_default_handler_numpy_unsupported_dtypez@TestPandasContainer.test_default_handler_numpy_unsupported_dtype(  sb    c71b>*%,gcSTo1VW#J

 T 	 zz#hz?8KKKr1   c           
      x   dfd}t        j                  t              5  t        dddt	               gi      j                  |       d d d        t        j                  t              5  t        dddt        dd	      gi      j                  |       d d d        y # 1 sw Y   XxY w# 1 sw Y   y xY w)
Nraisinc                     t              rp  )	TypeError)rF  r   s    r    my_handler_raiseszJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raises6  s    C. r1   r   rY   rg   rH   r  rJ   rJ  )r   r   rS  r
   r   r`   rC  )rD   rT  r   s     @r    test_default_handler_raisesz/TestPandasContainer.test_default_handler_raises3  s    	! ]]9C0 	sQ68,-.66 1 7 	 ]]9C0 	sQ71b>234<< 1 = 	 			 		 	s   )B$0+B0$B-0B9c                    t        dg di      }|d   |d<   |j                         }|d   j                  d      |d<   ||j                         k(  sJ |d   }|d   }|j                         |j                         k(  sJ y )Nr   )rY   rZ   r[   rY   rZ   rZ   rY   rM   category)r
   r`   r   )rD   rV   r.   rv   scs        r    test_categoricalz$TestPandasContainer.test_categoricalB  s    @ABS'3::<S'..,32::<'''sGWyy{bjjl***r1   c                 D   t        dddd      }|j                  d      j                  d       }t        |t        ddd      d      }|j	                         }||d	<   d
}t        j                  t        |      5  |j                         }||j                         k(  sJ 	 d d d        t        |      }t        |      }t        j                  t        |      5  |j                         |j                         k(  sJ 	 d d d        y # 1 sw Y   hxY w# 1 sw Y   y xY w)Nru   rt   
US/Easternr9   r;   r  r<   utcr:   r  r   ry   r   )
r   
tz_converttz_localizer
   ra   r+   r   r   r`   r   )	rD   tz_rangetz_naiverV   df_naiver   r.   stzs_naives	            r    test_datetime_tzz$TestPandasContainer.test_datetime_tzO  s   j!4P&&u-99$?J!MN
 779 I 	 ''cB 	,'')Hrzz|+++	, X"''cB 	6;;=GOO$5555	6 	6	, 	,	6 	6s   <&D
$D
DDc                 ,   t        t        j                  j                  d      j	                  d            }t        j
                  |j                  d d |j                  d      }|j                         }||j                         k(  sJ t        t        j                  j                  d      j	                  d            }t        j
                  |j                  d d |j                  d      }|j                         }||j                         k(  sJ y )NrH   )r5   rJ      Sparser5   )
r
   r@   rQ   rR   rS   r   r   r   r`   r   )rD   rV   sdfr.   rv   sss         r    test_sparsezTestPandasContainer.test_sparseg  s    ryy,,Q/??HIVVr
ii!::<3;;=(((299((+;;B?@FFbq	XXh99;2::<'''r1   r=   z2013-01-10 05:00:00Zz2013-01-10 00:00:00r[  r  z2013-01-10 00:00:00-0500c                 p    d}t        |d      |k(  sJ |j                         }t        |d      |k(  sJ y )Nz"2013-01-10T05:00:00.000Z"T	iso_dates)r   to_pydatetimerD   r=   expr?  s       r    test_tz_is_utcz"TestPandasContainer.test_tz_is_utcw  sA     +2.#5552.#555r1   c                     t        d      }d}t        |d      |k(  sJ |j                         }t        |d      |k(  sJ y )Nz2013-01-10 05:00:00z"2013-01-10T05:00:00.000"Trm  )r   r   ro  rp  s       r    test_tz_is_naivez$TestPandasContainer.test_tz_is_naive  sJ    ,-)2.#5552.#555r1   r`  z2013-01-01 05:00:00ZrH   r9   r:   z2013-01-01 00:00:00r\  z2013-01-01 00:00:00-0500c                 >   d}d}t        |d      |k(  sJ t        |      }t        |d      |k(  sJ t        |j                  t              d      |k(  sJ t	        d|i      }t        |d      }||k(  sJ t        |j                  dt        i      d      sJ y )Nz7["2013-01-01T05:00:00.000Z","2013-01-02T05:00:00.000Z"]zF{"DT":{"0":"2013-01-01T05:00:00.000Z","1":"2013-01-02T05:00:00.000Z"}}Trm  DT)r   r   r   r   r
   )rD   r`  rq  dfexprA  rV   r-   s          r    test_tz_range_is_utcz(TestPandasContainer.test_tz_range_is_utc  s     HX8t4;;;H% 3$/36663::f->#EEEc{#R40299dF^4EEEr1   c                     t        ddd      }d}d}t        |d      |k(  sJ t        |j                  t              d      |k(  sJ t	        d	|i      }t        |d      }||k(  sJ t        |j                  d	t        i      d      sJ y )
Nz2013-01-01 05:00:00rH   r9   r:   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"}}Trm  rv  )r   r   r   r   r
   )rD   rA  rq  rw  rV   r-   s         r    test_tz_range_is_naivez*TestPandasContainer.test_tz_range_is_naive  s    .EEV 3$/36663::f->#EEEc{#R40299dF^4EEEr1   c                     t        t        d      d      }t        ddgddggddg      }t        j                  ||       y )	Nr   Tr   rg   rH   rY   rZ   r   r   r   r
   r+   r,   r  s      r    test_read_inline_jsonlz*TestPandasContainer.test_read_inline_jsonl  sD     8$IJRVWq!fq!f-SzB
fh/r1   c                     t        d|j                   dd|      }t        ddgddggddg	      }t        j                  ||       y )
Nzs3n://z/items.jsonlT)r   storage_optionsrg   rH   rY   rZ   r   )r   r?   r
   r+   r,   )rD   s3_bucket_public_with_datas3sor-   r.   s        r    test_read_s3_jsonlz&TestPandasContainer.test_read_s3_jsonl  sW    
 /445\B 

 q!fq!f-SzB
fh/r1   c                     t        |dd      5 }|j                  d       d d d        t        |d      }t        ddgddggd	d
g      }t	        j
                  ||       y # 1 sw Y   BxY w)Nwzutf-8encodingr   Tr   rg   rH   rY   rZ   r   )openwriter   r
   r+   r,   )rD   r  infiler-   r.   s        r    test_read_local_jsonlz)TestPandasContainer.test_read_local_jsonl  so    )S73 	@vLL>?	@9D1q!fq!f-SzB
fh/		@ 	@s   A""A+c                    d}t        |      }t        |d      }t        ddgddggddg	      }t        j                  ||       t        d      }t        |d      }t        ddgddggddg	      }t        j                  ||       y )
Nu5   {"a": "foo”", "b": "bar"}
{"a": "foo", "b": "bar"}
Tr   u   foo”r   r   rY   rZ   r   )r   r   r
   r+   r,   rD   r4  r-   r.   s       r    test_read_jsonl_unicode_charsz1TestPandasContainer.test_read_jsonl_unicode_chars  s    
 I~4t,{E2UENCcSVZX
fh/ QR4t,{E2UENCcSVZX
fh/r1   bigNumc                     t        |t        dg      }|j                         }dt        |      z   dz   }||k(  sJ t	        |t        dgdg      }|j                         }dt        |      z   dz   }||k(  sJ y )	N	articleIdr  {"articleId":r  r   r7   r>   r*   {"0":{"articleId":r   )r   r   r`   r   r
   )rD   r  r  r4  r.   rV   s         r    test_to_json_large_numbersz.TestPandasContainer.test_to_json_large_numbers  s     f[MB~~"S[036xvVK=1#Nzz|'#f+5<xr1   l        l            c                 \   t        dt        |      z   dz         }d}t        j                  t        |      5  t        |       d d d        t        dt        |      z   dz         }t        j                  t        |      5  t        |       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nr  r  z#Value is too small|Value is too bigr   r  r   )r   r   r   r   rn   r   )rD   r  r4  r   s       r    test_read_json_large_numbersz0TestPandasContainer.test_read_json_large_numbers  s     #f+5;<4]]:S1 	dO	 ,s6{:TAB]]:S1 	dO	 			 		 	s   BB"B"B+c                     d}t        |      }t        |d      }t        ddg      }t        j                  ||       d}t        |      }t        |      }t        ddgdg	      }t        j                  ||       y )
Nz'{"articleId": "1404366058080022500245"}r  r  gg_SDr  r   z.{"0": {"articleId": "1404366058080022500245"}}r   r]   )r   r   r   r+   r  r
   r,   r  s       r    test_read_json_large_numbers2z1TestPandasContainer.test_read_json_large_numbers2  ss    8~4X.+k];
vx0?~4[sK
fh/r1   c                    t        ddgddggddg      }|j                  dd      }d	}||k(  sJ t        d
dgddggddg      }|j                  dd      }d}||k(  sJ t        j                  t	        t        |      d      |       t        ddgddggddg      }|j                  dd      }d}||k(  sJ t        j                  t	        t        |      d      |       y )Nrg   rH   rY   rZ   r   r#   Tr/   r   z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}r   zfoo"z/{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"}
r   zfoo\za\r   )r
   r`   r+   r,   r   r   r  s       r    test_to_jsonlz!TestPandasContainer.test_to_jsonl  s   AA'#s<9D93!!!&%9C:N9D9G!!!
i(8ErJ %(65/:UCLQ9D9R!!!
i(8ErJr1   z%GH#13774 encoding kwarg not supportedval)   E, 17r1      a   b   c)r  r  r  r  )s   EE, 17r1   r  r  r  )r     r  r  r  )r1   r  r  r  )r  r  r  r  )   Ar1   r  r  r  r1   r  r  r  rW  c           	         t        |D cg c]%  }t        |t              r|j                  d      n|' c}|      }d}|j	                  ||       t        t        |      |      }t        j                  ||d       y c c}w )Nzlatin-1r6   r  F)check_categorical)	r   r  rr  decoder`   r   r   r+   r  )rD   r7   r  r  rh   rE   r  retrs           r    test_latin_encodingz'TestPandasContainer.test_latin_encoding  sv    $ ILMAJq%$8QXXi a?M
 I1),x@
sDEB Ns   *Bc                     t        dt        d      gi      }|j                  dd      j                         }|j	                          |j                  dd      j                         }||k(  sJ y )NrY   rg   T)r>   deep)r
   r   memory_usagesumr`   )rD   rV   size_before
size_afters       r    "test_data_frame_size_after_to_jsonz6TestPandasContainer.test_data_frame_size_after_to_json9  sc    c!fX'ooDto<@@B


__4d_;??A
j(((r1   r   r   r   r   1.2.c                     t        ddgddgg||      }|j                  d      }t        t        |      d      }t	        j
                  ||       y )Nrg   rH   rt   rJ   r]   tabler^   r
   r`   r   r   r+   r,   )rD   r>   r*   r.   dfjsonr-   s         r    .test_from_json_to_json_table_index_and_columnszBTestPandasContainer.test_from_json_to_json_table_index_and_columnsC  sS     q!fq!f-UGL!!!18F+G<
fh/r1   c                     t        ddgddgddgd      }|j                  d	      }t        t        |      d	      }t	        j
                  ||       y )
Nrg   rH   r   r   r   r   r  r  r^   r  )rD   r.   r  r-   s       r    #test_from_json_to_json_table_dtypesz7TestPandasContainer.test_from_json_to_json_table_dtypesO  sS    Aq6c
#sLM!!!18F+G<
fh/r1   )re   r#   r>   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      }d}t        j                  t
        |      5  |j                  |      }d d d        |rt        j                  |j                  d<   t        t              |dddd	ddd      }t        j                  ||       y # 1 sw Y   ]xY w)Nr	  r   r6   )Nr   r   rB   )N r[   r   TFTboolrY   rZ   NrW  )r8   Nz
2020-01-03r  )IntegerFloatObjectBoolCategoryDatetimery   r   r^   )r   r  r  r/   r7   )r
   	from_dictr   r+   r   r   r`   r@   r   r   r   r   r,   )rD   r/   r   r.   r   r  r-   s          r    %test_to_json_from_json_columns_dtypesz9TestPandasContainer.test_to_json_from_json_columns_dtypesV  s     &&!)7; 0	B A2&A"#3:F"6>N	
I 	 ''cB 	5%%V%4F	5  )+HLL%V"""&,
 	fh/)	5 	5s   C77D c                     t        ddgddgd      }t        j                  t        d      5  |j	                  d	       d d d        y # 1 sw Y   y xY w)
Nrg   rH   rt   )r>   rY   rc   z/Overlapping names between the index and columnsr   r  r^   rm   rU   s     r    (test_to_json_with_index_as_a_column_namez<TestPandasContainer.test_to_json_with_index_as_a_column_name  sP    q!fAq6:;]]O
 	' JJgJ&	' 	' 	's   AA)rZ   r[   c                     t        ddgddgddgd      }|j                  d	      }d
}t        j                  t        |      5  t        |d|       d d d        y # 1 sw Y   y xY w)Nrg   rH   r   r   r   r   r  r  r^   z)cannot pass both dtype and orient='table'r   r  r
   r`   r   r   rn   r   )rD   r7   rV   r  r   s        r    !test_read_json_table_dtype_raisesz5TestPandasContainer.test_read_json_table_dtype_raises  se     aV3*C:FG7+9]]:S1 	;fWE:	; 	; 	;s   AA&)r>   r*   r#   r$   c                     t               }t        t        d      |d      }t        j                  |j
                  |j
                         t        j                  |j                  |j                         y )Nz{}Tr   )r
   r   r   r+   assert_index_equalr>   r*   )rD   r/   r.   r-   s       r    %test_read_json_table_empty_axes_dtypez9TestPandasContainer.test_read_json_table_empty_axes_dtype  sO     ;8D>&tL
fllHNN;
fnnh.>.>?r1   c                     t        ddgddggddgddg	      }|j                  d
      }d}t        j                  t        |      5  t        |d
d       d d d        y # 1 sw Y   y xY w)Nrg   rH   rt   rJ   r   r   r  r  r]   r  r^   z0cannot pass both convert_axes and orient='table'r   Tr   r  )rD   rV   r  r   s       r    (test_read_json_table_convert_axes_raisesz<TestPandasContainer.test_read_json_table_convert_axes_raises  sm    AA'SzD$<P7+@]]:S1 	AfW4@	A 	A 	As   A  A)zdata, expectedrJ   r   r   )r*   rc   r   rP   r	  r   )r?   rc   )r?   r>   c                 b    |j                  dd      }t        j                  |      }||k(  sJ y )Nre   Fr/   r>   )r`   r4  loadsrD   rc   r.   r-   s       r    test_index_false_to_json_splitz2TestPandasContainer.test_index_false_to_json_split  s3    @ WE:F#!!!r1   c                     |j                  dd      }t        j                  |      }t        j                  j                  j                  |d      t        |      j                  d      d}||k(  sJ y )Nr  Fr  r   r#   r^   )schemarc   )r`   r4  r  r   r3  build_table_schemar
   to_dictrD   rc   r-   r.   s       r    test_index_false_to_json_tablez2TestPandasContainer.test_index_false_to_json_table  sm    & WE:F# eejj33D3FdO++9+=

 !!!r1   c                     t        ddgddggddg      }d}t        j                  t        |	      5  |j	                  |d
       d d d        y # 1 sw Y   y xY w)Nrg   rH   rJ   r   rY   rZ   r   zU'index=False' is only valid when 'orient' is 'split', 'table', 'records', or 'values'r   Fr  rm   ro   s       r    test_index_false_error_to_jsonz2TestPandasContainer.test_index_false_error_to_json  s`    
 AA'#s<. 	 ]]:S1 	3JJfEJ2	3 	3 	3   AAr#   c                     t        ddgddggddg      }d}t        j                  t        |	      5  |j	                  |d
       d d d        y # 1 sw Y   y xY w)Nrg   rH   rJ   r   rY   rZ   r   zS'index=True' is only valid when 'orient' is 'split', 'table', 'index', or 'columns'r   Tr  rm   ro   s       r    test_index_true_error_to_jsonz1TestPandasContainer.test_index_true_error_to_json  s`    
 AA'#s<- 	 ]]:S1 	2JJfDJ1	2 	2 	2r  r  c                     t        ddgddgd      }|j                  ||      }t        t        |      |      }t	        j
                  ||       y )Nrg   rH   rt   rJ   r  r  r^   r  )rD   r/   r>   r.   r  r-   s         r    "test_index_false_from_json_to_jsonz6TestPandasContainer.test_index_false_from_json_to_json  sQ    
 Aq6A78!!u!=8F+F;
fh/r1   c                     t        t        d      dd      }t        dgd      }t        dg|	      }t	        j
                  ||       y )
Nz{"2019-01-01T11:00:00.000Z":88}r  r>   r  z2019-01-01 11:00:00zM8[us, UTC]r6   X   r   )r   r   r   r   r+   r  )rD   r-   exp_dtir.   s       r    test_read_timezone_informationz2TestPandasContainer.test_read_timezone_information  sI    67Xg
  !6 7}M2$g.
vx0r1   r  )zs3://example-fsspec/zgcs://another-fsspec/file.jsonz,filecache::s3://yet-another-fsspec/file.jsonzhttps://example-site.com/datazsome-protocol://data.txtc                 |    t        t        d| d            }t        d|gi      }t        j                  ||       y )Nz{"url":{"0":"r  r  r|  )rD   r  r-   r.   s       r    test_read_json_with_url_valuez1TestPandasContainer.test_read_json_with_url_value  s<     8ocU%$@ABecU^,
fh/r1   compression)r  z.gzz.bz2z.tarc                     d d| }t        j                  t        d| d      5  t        |       d d d        y # 1 sw Y   y xY w)N  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.jsonzFile z does not existr   r   )rD   r  long_json_paths      r    'test_read_json_with_very_long_file_pathz;TestPandasContainer.test_read_json_with_very_long_file_path!  sN     '<u[M:]]u^,<O%L
 	&
 n%	& 	& 	&s	   <Azdate_format,key)r  i \&)r  z1970-01-02T00:00:00.000c                 4   t        dggt        d      t        j                  d      z   j	                  |      g      }d| d}d }|dk(  rt
        }d}t        j                  ||	      5  |j                  |
      }d d d        |k(  sJ y # 1 sw Y   xY w)Nrg   r   1Dr   r  
":{"0":1}}r  r  r   r  )	r
   r   r   r/  r   r   r+   r   r`   	rD   r  keyr<   rV   r.   r   r   r-   s	            r    test_datetime_as_labelz*TestPandasContainer.test_datetime_as_label/  s     SEYq\BLL,>>GGMN
 ]+'!-= 	 ''(8D 	9ZZKZ8F	9 !!!	9 	9s   +BB)r  
P1DT0H0M0Sc                    t        dggt        j                  d      j                  |      g      }d| d}d }|dk(  rt        }d}t        j                  ||      5  |j                  |	      }d d d        |k(  sJ y # 1 sw Y   xY w)
Nrg   r  r   r  r  r  r  r   r  )r
   r   r/  r   r   r+   r   r`   r  s	            r    test_timedelta_as_labelz+TestPandasContainer.test_timedelta_as_labelE  s     ur||D'9'A'A$'G&HI]+'!-= 	 ''(8D 	9ZZKZ8F	9 !!!	9 	9s   BBzorient,expected)r>   z{"('a', 'b')":{"('c', 'd')":1}})r*   z{"('c', 'd')":{"('a', 'b')":1}}r  z,Produces JSON but not in a consistent mannerc                 Z    t        dggdgdg      }|j                  |      }||k(  sJ y )Nrg   r  )r[   r\   r]   r^   r  rD   r/   r.   rV   r-   s        r    test_tuple_labelsz%TestPandasContainer.test_tuple_labelsY  s8    0 uZL:,G6*!!!r1   indent)rg   rH   rJ   c                     t        ddgddggddg      }|j                  |      }d	|z  }d
| d| | d| | d| d| d| | d| | d| d}||k(  sJ y )Nr   r   r   r   rY   rZ   r   r   z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
}r  )rD   r  rV   r-   spacesr.   s         r    test_to_json_indentz'TestPandasContainer.test_to_json_indentu  s     7#sL6*v 	   	 	   		 !!!r1   z]Adjust expected when infer_string is default, no bug here, just a complicated parametrization))re   z{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r#   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])r>   zn{
    "0":{
        "a":"foo",
        "b":"bar"
    },
    "1":{
        "a":"baz",
        "b":"qux"
    }
})r*   zn{
    "a":{
        "0":"foo",
        "1":"baz"
    },
    "b":{
        "0":"bar",
        "1":"qux"
    }
})r$   zV[
    [
        "foo",
        "bar"
    ],
    [
        "baz",
        "qux"
    ]
])r  aa  {
    "schema":{
        "fields":[
            {
                "name":"index",
                "type":"integer"
            },
            {
                "name":"a",
                "type":"string"
            },
            {
                "name":"b",
                "type":"string"
            }
        ],
        "primaryKey":[
            "index"
        ],
        "pandas_version":"1.4.0"
    },
    "data":[
        {
            "index":0,
            "a":"foo",
            "b":"bar"
        },
        {
            "index":1,
            "a":"baz",
            "b":"qux"
        }
    ]
}c                 b    t        ddgddggddg      }|j                  |d	      }||k(  sJ y )
Nr   r   r   r   rY   rZ   r   rJ   )r/   r  r  r  s        r    test_json_indent_all_orientsz0TestPandasContainer.test_json_indent_all_orients  sB    x 7#sL6!4!!!r1   c                     t        j                  t        d      5  t               j	                  d       d d d        y # 1 sw Y   y xY w)Nzmust be a nonnegative integerr   r  )r   r   rn   r
   r`   rw  s    r     test_json_negative_indent_raisesz4TestPandasContainer.test_json_negative_indent_raises	  s9    ]]:-LM 	+Kr*	+ 	+ 	+s   A  A	c           	          t        d      }t        |      }t        dd dt        j                  dt        j                   dg      }t        j                  ||       y )Nz?["a", NaN, "NaN", Infinity, "Infinity", -Infinity, "-Infinity"]rY   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  sR    M
 4$rvvzBFF7KH
 	fh/r1   c                     t        j                  ddiddig      }t        dddgi      }t        t	        |            }t        j                  ||       y )Ncol31900441201190696999Text)r4  dumpsr
   r   r   r+   r,   )rD   encoded_jsonr.   r-   s       r    test_frame_int_overflowz+TestPandasContainer.test_frame_int_overflow  sS    zzE+A#BUFO"TUe&<f%EFG8L12
fh/r1   c                 ~    t        g dg dd      }d}|j                         }|j                  d      }||k(  sJ y )Nr	  r  rh   ri   zU{"(0, 'x')":1,"(0, 'y')":"a","(1, 'x')":2,"(1, 'y')":"b","(2, 'x')":3,"(2, 'y')":"c"}r>   r^   )r
   stackr`   )rD   	dataframer.   r  r-   s        r    test_json_multiindexz(TestPandasContainer.test_json_multiindex  sH    IODE	@ 	 "w/!!!r1   c                     |j                   }t        j                          d}t        g dg dd      }d| d| }|j	                  ||       t        ||      }t        j                  ||       y )Nr  r	  )rH   rJ   r   r  zs3:///)r  )r?   uuiduuid4r
   r`   r   r+   r,   )rD   s3_bucket_publicr  mock_bucket_nametarget_filerV   urir-   s           r    
test_to_s3zTestPandasContainer.test_to_s3)  sq     ,00e,YY78&'q6


3
-35
fb)r1   c                     d }d}|t         j                  u rt        }t        j                  ||      5  t        |gg      j                         }d d d        dk(  sJ y # 1 sw Y   xY w)Nry   r   z{"0":{"0":null}})r   r;  r   r+   r   r
   r`   )rD   nulls_fixturer   r   r-   s        r    test_json_pandas_nullsz*TestPandasContainer.test_json_pandas_nulls5  st    I 	 BFF"-''(8D 	<0199;F	<++++	< 	<s   A  A)c                 v    t        t        d      d      }t        g d      }t        j                  ||       y )Nz[true, true, false]r  r  )TTFr   r   r   r+   r  r  s      r    test_readjson_bool_seriesz-TestPandasContainer.test_readjson_bool_seriesC  s/    8$9:I-.
vx0r1   c                     t        dt        ddd      ddg      j                         }|j                         }d	}||k(  sJ y )
NTz
2017-01-20z
2017-01-23r9   r/  r   r   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_escapeI  sV    \<dCEN
 %'	 	
 B 	 !!!r1   c                      G d d      }t         |dddd      g      }t        j                  |j                               ddddd	ik(  sJ y )
Nc                       e Zd ZddZd Zy)GTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectNc                 <    || _         || _        || _        || _        y rp  rY   rZ   _cr\   )rD   rY   rZ   r,  r\   s        r    ru  zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init___  s    r1   c                      y)Nr   r   rw  s    r    r   zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.ee  s    r1   ry  )rz  r{  r|  ru  r   r   r1   r    _TestObjectr)  ^  s    r1   r.  rg   rH   rt   rJ   r+  0)rY   rZ   r\   )r   r4  r  r`   )rD   r.  r  s      r    test_to_json_series_of_objectsz2TestPandasContainer.test_to_json_series_of_objects]  sP    	 	 qA!q9:;zz&..*+1115M/NNNNr1   zdata,expectedy             @y              ?y      "@      )r   rg   rH   zW{"0":{"imag":8.0,"real":-6.0},"1":{"imag":1.0,"real":0.0},"2":{"imag":-5.0,"real":9.0}}yHz"Q?y@p=
ף"@yQ@(\ſz]{"0":{"imag":0.66,"real":-9.39},"1":{"imag":9.32,"real":3.95},"2":{"imag":-0.17,"real":4.03}}y             @y              y      @      y              $z{"0":{"0":{"imag":3.0,"real":-2.0},"1":{"imag":-3.0,"real":4.0}},"1":{"0":{"imag":0.0,"real":-1.0},"1":{"imag":-10.0,"real":0.0}}}yQѿ(\?yHzG(\ؿy=
ףp=?(\տy(\迚z{"0":{"0":{"imag":0.34,"real":-0.28},"1":{"imag":-0.34,"real":0.41}},"1":{"0":{"imag":-0.39,"real":-1.08},"1":{"imag":-1.35,"real":-0.78}}}c                 2    |j                         }||k(  sJ y rp  r   r  s       r    test_complex_data_tojsonz,TestPandasContainer.test_complex_data_tojsonl  s    F !!!r1   c                 Z    d}t        dddgi      }|j                  d      }||k(  sJ y )NzY{"columns":["col1"],"index":[0,1],"data":[[13342205958987758245],[12388075603347835679]]}col1l   :!c&HI l   v8$Z_
 r  re   r^   r  )rD   r.   rV   r-   s       r    test_json_uint64z$TestPandasContainer.test_json_uint64  sC    F 	 V&:<P%QRS7+!!!r1   c                 P   t        t        dt        dgd      t        g dd      t        dt        dgd      t        g d	d      g d
g dg dg dd      }|j                  |      }t	        j
                  d|      5  t        t        |      ||      }d d d        |dk(  r9t        j                  d      }t	        j                  |j                               }	nt	        j                  |      }	t        t        dt        dgd      t        g dd      t        dt        dgd      t        g d	d      t        ddt        gd      t        g dd      t        g d|	      t        g d|	      d      }
|dk(  rYt        j                  d      }ddlm} t        |
j                  D ci c]  }| ||j!                  |
|   d            ! c}      }
|dk(  rt#        t%        d            |
_        t'        j(                  |
d       y # 1 sw Y   }xY wc c}w )Nrg   rt   Int64r6   r	  rr   rs   Float64)rr   r   rs   )TFNr  r  r  )rY   rZ   r[   r\   r   r  grJ  r^   mode.string_storage)r   r/   r   TFbooleanr   ArrowExtensionArrayfrom_pandasr$   rg  r7  )r
   r   r	   r`   r   option_contextr   r   r   importorskip
ArrowDtypestringStringDtypepandas.arraysr=  r*   arrayrT   r(   r+   r,   )rD   string_storager   r/   r   rV   outr-   pastring_dtyper.   r=  r  s                r    test_read_json_dtype_backendz0TestPandasContainer.test_read_json_dtype_backend  s    QAJg6IW5S"cN)<O9=(($%	
 jjj'4nE 	]6F	
 I%$$Y/B==5L>>.9LQAJg6IW5S"cN)<O9=T5"-Y?/yAO<@,LA	
 I%$$Y/B9   (// ,RXXhsmQUX-VWWH X#E!H~H 	fh%HQ	 	:s   H4$H#H z0ignore:Passing a BlockManager:DeprecationWarningc                    ddd}d}t        t        |      |ddd      }|j                  }t        t        j
                  j                  d      t        j
                  j                  d      gdd	g
      }t        j                  ||       y )Nzint32[pyarrow]int64[pyarrow]r  s   {"a": 1, "b": 2}
Tr   )r7   r   enginer   rY   rZ   r   )	r   r   r  r   r   rB  construct_from_stringr+   r  )rD   r7   r4  rV   r-   r.   s         r    !test_read_json_pyarrow_with_dtypez5TestPandasContainer.test_read_json_pyarrow_with_dtype  s     '-=>$DM#
 334DE334DE *
 	vx0r1   )re   r#   r>   c                    t        j                  d      }t        dt        dgd      }|j	                  |      }t        j                  d|      5  t        t        |      ||d	      }d d d        t        dt        dgd      }|dk(  r(d
dl	m
}	 t         |	|j                  |d                  }t        j                  |       y # 1 sw Y   axY w)Nr   rg   rt   r7  r6   r^   r:  r  )r   r/   r  r   r<  Tr>  )r   rA  r   r	   r`   r   r@  r   r   rE  r=  rF  r+   r  )
rD   rG  r   r/   rI  rE   rH  r-   r.   r=  s
             r    test_read_json_nullable_seriesz2TestPandasContainer.test_read_json_nullable_series  s       +aQZw/kkk(4nE 	]6xF	
 1b!*G4I%91"((8QU(2VWXH
vx0	 	s   CCc                     d}t        j                  t        |      5  t        dd       d d d        y # 1 sw Y   y xY w)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   r  numpyr   )r   r   rn   r   )rD   r   s     r    test_invalid_dtype_backendz.TestPandasContainer.test_invalid_dtype_backend	  s;    % 	 ]]:S1 	5fG4	5 	5 	5s   5>)rz  r{  r|  r   fixturerF   rW   rd   r   parametrizerj   rp   r   r   r   r   r   r   r   r@   r   r   rB   intr   r   r   paramr1  
skip_if_nor   r   r   AssertionErrorr   r>  r   r   r   r   r   skipifr   r  r  r  r  r  r-  rG  rj  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r1  r  r  r  r  r  r  r  r
   rA   r   r  r   r,  r  r  r   r  r  network
single_cpur  r'  r-  r2  r/  r   r5  r9  r<  rM  rO  rU  rY  re  rk  rr  rt  r   rx  rz  r}  skip_if_not_us_localer  r  r  sysmaxsizer  r  r  r  rS  r   r   r  r  r  r  r  r  r  r  r  rename_axisr  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r	  r  r  r  r!  r$  r&  r0  r2  r5  rK  filterwarningsrP  rR  rU  r   r1   r    r3   r3   G   s   ^^	 	 ^^	 	
> [[X'EF> G> [[X';<& =& [[X':;[[3Z#s$3Z#s$X3x :&..s3S9:&..s3S9		
0 <0> [[X'FG& H&N [[Wuen5[[^dE];> < 6> [[Wubhh&78[[^dE];> < 9> [[WtRZZd&CD[[^dE];> < E>< [[^dE];> <>: [[^dE];0 <0 [[$YmbmmI>V WX [[^dE];> <>0 [[^dE];> <>& [[J   [[fu~.fu~.fu~.	
*	* [[D; V
 
/	
!D5E!D5 [[WtUm4[[^dE];+ < 5+( [[WtUm40 50 [[URVVbffW$56[[WtUm4+ 5 7+ [[D)OP[[&	

B
 QB
)B"

+<"QHa
F$
L"7$P1 [[Wudm41 51	1 [[$YmbmmI>V WX11& [[Wrzz3&78	1 9	1(B
1 [[$YmbmmI>V WX [[6<.0@ABFL>*+	
11*
*
*!
# "1H [[]We,<=[[[4-8[[Z(--9J9JI)VW" X 9 >"@ [[	

0
0 [[	
	0	0$; [[	
	1	1;04 [[_9299Q<@A4H123T:)			!SV0WX 	 ."..)STU 		
&'& [[$YmbmmI>V WX [[V%67!0 8!0F*.$	' [[[[	0  	0><-(
H [[[4-8[[]UG,<=[[_r||Y.GH" I > 9"< [[[4-8[[_r||Y.GH" I 9"$H
*	L+60(  [[,-+=01	
666 [[-qtD,aLtT114H	
FFF0 [[[[0   000" [[Xa3;;?9K'LM
  N
  [[Xe'<=	 >	0K, [[EiX[[1,.9#+1VVS$%2663d3
	
 [[Wz6&:;	C < Y 	C) [[$Ac
S#Jc
T4LQ [[Y#sc3Z$(NO0 P00 [[X'OP&0 Q&0P' [[Wt3S-A&BC; D; [[X'PQ@ R@A [[ Aq6Aq6*S#J? #J!Q!Q0@A
 Aq6Aq6*S#J?KKER #J!Q!Q0@A
 VaV$sCj#scSVZ@X !#J!Q!Q0@A	 IC(3	*JKys+77>i0
 1vCc
S#J/GHq!f-)	
8"98" [[AA'#s<AA'#s<HHOVaV$sCj#scSVZ@X IC(IC(44U;QFc3Z#s,DE	
"" [[X';<3 =3 [[X	8'<=2 >2 [[X'9:[[WtUm40 5 ;01 [[	
	0	0 [[#&	& [[/1ST""& [[/1FG""" [[<>FLLkk''I (  FLLkk''I ( 	
,"-," [[Xy1" 2"& [[-  
 [[q	
tj"ktt"+	00" [[[[*  *,1"(O [[ 7v&9:0 =\lKL2 GW-/ABC2 #]3lM5RS4	)	
 B"C B"
":Ix R]]9[[ RS1 T 1, [[X'DE1 F1(5r1   r3   c                      t        t        d            } | j                         }t        j                  t
        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nrg   zThe engine type foor   r   )rN  r   r(   r`   r   r   rn   r   rE   rH  s     r    test_invalid_enginerg  	  sI    
q
C
++-C	z)>	? %#e$% % %s    AA c                      t        t        d            } | j                         }t        j                  t
        d      5  t        |dd       d d d        y # 1 sw Y   y xY w)Nrg   z&currently pyarrow engine only supportsr   r   F)rN  r   re  rf  s     r    test_pyarrow_engine_lines_falseri  	  sK    
q
C
++-C	z)Q	R 6#iu56 6 6s    AA!c           	         t        ddgddggddgddg	      }|j                         }t        j                  d
d      5  t	        t        |            }d d d        t        j                  t        j                        }t        ddgddgg|t        ddg|      t        ddg|            }t        j                  |       y # 1 sw Y   sxY w)NrY   rZ   r[   r\   zrow 1zrow 2zcol 1zcol 2r]   zfuture.infer_stringT)na_valuer6   r  )r
   r`   r   r@  r   r   rD  r@   r   r   r+   r,   )r/   rV   rH  r-   r7   r.   s         r    $test_json_roundtrip_string_inferencerl  	  s    	
sc3Z '(:WgDV
B **,C			0$	7 *8C=)*NNBFF+E
sc3Z Wg&e4w(6	H &(+* *s   CCr   c                      t        t        dt        gd      t        dt        gd      d      } | j                  dd	      }d
}||k(  sJ y )Nrg   rM  r6   rH   r7  r  r#   Tr  z"{"a":1,"b":2}
{"a":null,"b":null}
)r
   r   r	   r`   )rV   r-   r.   s      r    test_to_json_ea_nullrn  /	  s[     
B'78Bw/	

B ZZyZ5FH Xr1   c                      d} t        t        |       d      j                  }t        d      }t	        j
                  ||d       y )Nz#
{"a": 1, "b": 2}
{"a": 3, "b": 4}
Tr   rH   )exact)r   r   r>   r   r+   r  )rc   r-   r.   s      r    test_read_json_lines_rangeindexrq  ?	  s<    D x~T288F!}H&($7r1   c                  x    t        t        d      ddd      } t        dg      }t        j                  | |       y )Nz["9999999999999999"]r$   r  F)r/   r  rz   l   _r#  )r-   r.   s     r    test_large_numberrs  J	  s>    '(	F '()H68,r1   )0r  r   r3  r   r   r4  r<  r`  r  rT  r@   r   pandas._configr   pandas.compatr   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr1  pandasr   r	   r
   r   r   r   r   r   r   r   pandas._testing_testingr+   pandas.io.jsonr   r!   r0   r3   rg  ri  rl  rZ  rn  rq  rs  r   r1   r    <module>r~     s       	 
    -  ( ) ) 
 
 
  &F2,D#5 D#5NF%6," y 8	-r1   