
    <>iY                        S SK r S SKJr  S SKJr  S SKrS SKrS SKrS SKrS SK	r	 S SK
rS SKrS SKrS SKJrJrJrJr  S rSS jrS rS rS	 r " S
 S\ R4                  5      r " S S\5      r " S S\5      r " S S\\	R<                  5      r " S S\\	R<                  5      r  " S S\\	R<                  5      r!\RD                  RF                   " S S\\	R<                  5      5       r$g! \ a    Sr Nf = f)    N)OrderedDict)Decimal)	read_json	open_jsonReadOptionsParseOptionsc               #   t   #    [         R                  n U  S h  vN   U  H  nU  H	  nX-   v   M     M     g  N7fN)stringascii_lowercase)lettersfirstseconds      V/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_json.pygenerate_col_namesr   %   s:     $$GF.    s   868c                    [         R                  R                  S5      R                  SSX4S9n[	        [
        R                  " [        5       U 5      5      n/ nUR                   H\  n[        [        XF5       VVs/ s H  u  pxU[        U5      4PM     snn5      n	UR                  [        R                  " U	5      5        M^     UR                  U5      R!                  5       n
U Vs/ s H+  n["        R$                  " U["        R&                  " 5       S9PM-     nn["        R(                  R+                  X5      nX4$ s  snnf s  snf )N*   r     )size)type)nprandomRandomStaterandintlist	itertoolsislicer   Tr   zipintappendjsondumpsjoinencodepaarrayint64Tablefrom_arrays)num_colsnum_rowslineseparr	col_nameslinesrowkvjson_objdatacolcolumnsexpecteds                 r   make_random_jsonr9   .   s    
))


#
+
+At8:N
+
OCY%%&8&:HEFIEuu#i:MN:MCF:MNOTZZ)*  <<%%'D9<=#rxx"((*-G=xx##G7H>  O >s   <D?)2Ec                     U " S0 UD6nUR                  UR                  UUR                  S95      nUR                  5        H  u  pV[	        XE5      U:X  a  M   e   g )N)protocol )loadsr#   HIGHEST_PROTOCOLitemsgetattr)clspicklerattr_valuesoptsnew_optsnamevalues          r   check_options_class_picklingrH   ;   sb    D}}W]]44;4L4L + N OH"((*x&%/// +    c                 0   [         nU" 5       nUR                  S:  d   eSUl        UR                  S:X  d   eUR                  SL d   eSUl        UR                  SL d   eU" SSS9nUR                  S:X  d   eUR                  SL d   e[        XSSS9  g )Nr   i90  TFi  )
block_sizeuse_threads)rB   rK   rL   )r   rK   rL   rH   )pickle_modulerA   rD   s      r   test_read_optionsrN   C   s    
C5D??QDO??e###t###Du$$$$E2D??d"""u$$$ ,0-24rI   c                 0   [         nU" 5       nUR                  SL d   eUR                  b   eSUl        UR                  SL d   e[        R                  " [        R
                  " S[        R                  " 5       5      /5      nX2l        UR                  U:X  d   eUR                  S:X  d   eS H  nXBl        UR                  U:X  a  M   e   [        R                  " [        5         SUl        S S S 5        [        XUSSS9  g ! , (       d  f       N= f)	NFTfooinfer)ignoreerrorrQ   zinvalid-valuerR   )rB   explicit_schemanewlines_in_valuesunexpected_field_behavior)r   rU   rT   r&   schemafieldint32rV   pytestraises
ValueErrorrH   )rM   rA   rD   rW   rG   s        r   test_parse_optionsr]   X   s    
C5D""e+++'''"D""d***YY
345F!6)))))W444-).&--666 . 
z	")8& 
# !1749;CE 
#	"s   *D
Dc                      \ rS rSr\R
                  S 5       rS rS rS r	S r
S rS rS	 rS
 rS rS r\R$                  R&                  S 5       r\R$                  R&                  S 5       r\R$                  R&                  S 5       rSrg)BaseTestJSONs   c                     [         e)z{
:param b: bytes to be parsed
:param kwargs: arguments passed on to open the json file
:return: b parsed as a single Table
)NotImplementedErrorselfbkwargss      r   
read_bytesBaseTestJSON.read_bytest   s
     "!rI   c                     UR                   [        U5      :X  d   eUR                   Vs/ s H  o3R                  PM     snU:X  d   eg s  snf r
   )num_columnslenr7   rF   )rd   tablenamescs       r   check_namesBaseTestJSON.check_names}   s@      CJ... %.1.%777.s   A	c           	         Sn[        5       n[        5       nXS-   4 H  nS H  nXSl        SUl        [        R
                  " [        SS9   U R                  XBUS9  S S S 5        [        SS	5       H3  nXbl        U R                  XBUS9nUR                  5       S
/ SQ0:X  a  M3   e   M     M     g ! , (       d  f       NZ= f)Ns   {"a": 1}
{"a": 2}
{"a": 3}   
FT   ztry to increase block sizematchread_optionsparse_options	      a)         )
r   r   rU   rK   rZ   r[   r\   rg   range	to_pydict)rd   rowsrx   ry   r5   rU   rK   rl   s           r   test_block_sizesBaseTestJSON.test_block_sizes   s    ."}$%<(D&3"3E0*+']]:)EGOOD2? $ AG #(2,J.8+ OOD:G , IE ??,i0@@@@	 #/ '4 )G Gs   B00
B>c                 j    SnU R                  U5      nUR                  5       SS/SS/SS/S.:X  d   eg )	Ns/   {"a": 1,"b": 2, "c": 3}
{"a": 4,"b": 5, "c": 6}r}   rt   r~      r      r|   re   rn   )rg   r   )rd   r   rl   s      r   test_no_newline_at_end#BaseTestJSON.test_no_newline_at_end   sH    B% QQQ%
 
 	
 
rI   c                 >   SnU R                  U5      n[        R                  " S[        R                  " 5       4S[        R                  " 5       4S[        R                  " 5       4/5      nUR                  U:X  d   eUR	                  5       SS/SS/S	S
/S.:X  d   eg )Ns0   {"a": 1,"b": 2, "c": 3}
{"a": 4,"b": 5, "c": 6}
r|   re   rn   r}   rt   r~   r   r   r   r   )rg   r&   rW   r(   r   rd   r   rl   rW   s       r   test_simple_intsBaseTestJSON.test_simple_ints   s    D%S"((*- "((*- "((*-/ 0 ||v%%% QQQ%
 
 	
 
rI   c                 p   SnU R                  U5      n[        R                  " S[        R                  " 5       4S[        R                  " 5       4S[        R
                  " 5       4S[        R                  " 5       4/5      nUR                  U:X  d   eUR                  5       SS/SS	/S
S/SS/S.:X  d   eg )NsQ   {"a": 1,"b": 2, "c": "3", "d": false}
{"a": 4.0, "b": -5, "c": "foo", "d": true}
r|   re   rn   d      ?      @r~   3rP   FTr|   re   rn   r   )rg   r&   rW   float64r(   r   bool_r   r   s       r   test_simple_variedBaseTestJSON.test_simple_varied   s    @%S"**,/ "((*- "))+. "((*-/ 0 ||v%%% sRu	%
 
 	
 
rI   c           	         SnU R                  U5      n[        R                  " S[        R                  " 5       4S[        R                  " 5       4S[        R
                  " 5       4S[        R                  " 5       4S[        R                  " 5       4/5      nUR                  U:X  d   eUR                  5       / SQ/ SQ/ S	Q/ S
Q/ SQS.:X  d   eg )Ns   {"a": 1, "b": 2, "c": null, "d": null, "e": null}
{"a": null, "b": -5, "c": "foo", "d": null, "e": true}
{"a": 4.5, "b": null, "c": "nan", "d": null,"e": false}
r|   re   rn   r   e)r   Ng      @)r~   r   N)NrP   nan)NNN)NTF)r|   re   rn   r   r   )	rg   r&   rW   r   r(   r   nullr   r   r   s       r   test_simple_nullsBaseTestJSON.test_simple_nulls   s    M %S"**,/ "((*- "))+. "''), "((*-	/ 0
 ||v%%% !%#$%
 
 	
 
rI   c                     SnU R                  U5      n[        R                  " S[        R                  " [        R                  " 5       5      4/5      nUR                  U:X  d   eUR                  5       S/ /0:X  d   eg )N	   {"a": []}r|   )rg   r&   rW   list_r   r   r   s       r   test_empty_listsBaseTestJSON.test_empty_lists   sg    %S"((2779"5678||v%%% S2$K///rI   c                     SnU R                  U5      n[        R                  " / 5      nUR                  U:X  d   eUR                  S:X  d   eUR                  S:X  d   eg )Ns   {}
{}
r   r~   )rg   r&   rW   rj   r,   r   s       r   test_empty_rowsBaseTestJSON.test_empty_rows   sZ    %2||v%%%  A%%%~~"""rI   c                    SnS[        S5      [        S5      [        S5      S /0n[        R                  [        R                  [        R                  [        R
                  4nU Hc  n[        R                  " SU" SS5      4/5      n[        US9nU R                  XS	9nUR                  U:X  d   eUR                  5       U:X  a  Mc   e   g )
Ns'   {"a": 1}
{"a": 1.45}
{"a": -23.456}
{}
r|   1z1.45z-23.456rz   rt   rT   ry   )
r   r&   	decimal32	decimal64
decimal128
decimal256rW   r   rg   r   )rd   r   r8   decimal_typestype_factoryrW   rD   rl   s           r   test_explicit_schema_decimal)BaseTestJSON.test_explicit_schema_decimal   s    
 '#,1CTJ
 r||R]]BMMR)LYYl1a&8 9:;F7DOODO=E<<6)))??$000 *rI   c                    Sn[         R                  " S[         R                  " 5       4/5      n[        US9nU R	                  XS9nUR                  [         R                  " S[         R                  " 5       4S[         R
                  " 5       4/5      :X  d   eUR                  5       SS/SS	/S
.:X  d   e[        USS9nU R	                  XS9nUR                  [         R                  " S[         R                  " 5       4/5      :X  d   eUR                  5       SSS/0:X  d   e[        USS9n[        R                  " [         R                  SS9   U R	                  XS9  S S S 5        g ! , (       d  f       g = f)Ns2   {"foo": "bar", "num": 0}
{"foo": "baz", "num": 1}
rP   r   r   nums   bars   bazr   r}   )rP   r   rR   )rT   rV   rS   "JSON parse error: unexpected fieldru   )
r&   rW   binaryr   rg   r(   r   rZ   r[   ArrowInvalid)rd   r   rW   rD   rl   s        r   .test_explicit_schema_with_unexpected_behaviour;BaseTestJSON.test_explicit_schema_with_unexpected_behaviour   s   .BIIK 
  F39||ryyBIIK BHHJ*
    	   F#q6%
 
 	
 
 F6>@9||ryyBIIK *
    	   FF#%
 
 	
 

 F6=?]]2??!EGOODO5G G Gs   E++
E9c                     [        SSS9u  pU R                  U5      nUR                  UR                  :X  d   eUR                  U5      (       d   eUR	                  5       UR	                  5       :X  d   eg )Nr~   
   r+   r,   )r9   rg   rW   equalsr   )rd   r5   r8   rl   s       r   test_small_random_json#BaseTestJSON.test_small_random_json  sg    )1rB%||x...||H%%%% H$6$6$8888rI   c                     [        SSS9u  p[        SS9nU R                  XS9nUR                  S:X  d   eUR                  S:X  d   eg )Nr~   i r   i   rK   rx   )r9   r   rg   r,   )rd   r5   r8   rx   rl   s        r   test_load_large_json!BaseTestJSON.test_load_large_json!  sP    )1vF"l;@~~'''  F***rI   c           	         [        SSS9u  p[        5       n[        5       nXR                  S5      4 H  nS H  nXdl        S Hq  nXsl        U R                  XSUS9nUR                  UR                  :X  d   eUR                  U5      (       a  MM  UR                  5       UR                  5       :X  a  Mq   e   M     M     g )Nr~   d   r   s   
rs   )      %   rw   )
r9   r   r   rstriprU   rK   rg   rW   r   r   )	rd   	data_baser8   rx   ry   r5   rU   rK   rl   s	            r   test_stress_block_sizes$BaseTestJSON.test_stress_block_sizes*  s     /CH	"}$ 0 0 9:D&3"3E0".J.8+ OOD:G , IE <<8??::: <<11$0H4F4F4HHHH #/ '4 ;rI   r<   N)__name__
__module____qualname____firstlineno__abcabstractmethodrg   ro   r   r   r   r   r   r   r   r   r   rZ   marknumpyr   r   r   __static_attributes__r<   rI   r   r_   r_   s   s    " "8A,


"
(0#1"#6J [[9 9 [[+ + [[I IrI   r_   c                   &    \ rS rSrS rS rS rSrg)BaseTestJSONReadi>  c                 P    U R                   " [        R                  " U5      40 UD6$ r
   )r   r&   	py_bufferrc   s      r   rg   BaseTestJSONRead.read_bytes@      ~~bll1o888rI   c                 b   SnS/S/S.n[         R                  " U5      nU R                  U5      nUR                  5       U:X  d   e[         R                  " UR                  5       5      n[        R                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = f)N   {"a": 1, "b": 2}
r}   r~   r|   re   )	ioBytesIOr   r   StringIOdecoderZ   r[   	TypeError)rd   r5   expected_databiorl   sios         r   test_file_object!BaseTestJSONRead.test_file_objectC  s~    $ c,jjs# M111kk$++-(]]9%NN3 &%%s   B  
B.c           
      "   Sn[        [        U5      S9nSS S/4SS / /4SS / S///4SS 0 /4S	S S
S 0S
SS00/44 HR  u  p4U R                  X-   US9nSU0nUR                  5       U:X  d   eUR	                  S5      R
                  S:  a  MR   e   g )Ns"   {                               }
r   s   {"a": 0}r   r   s   {"a": []}
{"a": [[1]]}r}   s	   {"a": {}}s    {"a": {}}
{"a": {"b": {"c": 1}}}re   rn   r   r|   )r   rk   rg   r   column
num_chunks)rd   	first_rowrx   	next_rowsexpected_pylistrl   r8   s          r   test_reconcile_across_blocks-BaseTestJSONRead.test_reconcile_across_blocksN  s    :	"c)n=4)$D":&'$aSE):;D":&1S$K#Qx13+
&I OOI$91= $ ?E_-H??$000<<$//!333+
rI   r<   N)r   r   r   r   rg   r   r   r   r<   rI   r   r   r   >  s    9	 4rI   r   c                   n    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)BaseTestStreamingJSONReadib  c                 v    UR                  S[        5       5      nU R                  Ul        [        U/UQ70 UD6$ )z
Reads the JSON file into memory using pyarrow's open_json
json The JSON bytes
args Positional arguments to be forwarded to pyarrow's open_json
kwargs Keyword arguments to be forwarded to pyarrow's open_json
rx   )
setdefaultr   rL   r   )rd   r"   argsrf   rx   s        r   r   #BaseTestStreamingJSONRead.open_jsonc  s;     ((G#'#3#3 ////rI   c                 P    U R                   " [        R                  " U5      40 UD6$ r
   )r   r&   r   rc   s      r   
open_bytes$BaseTestStreamingJSONRead.open_bytesn  r   rI   c                    UR                   U:X  d   e[        U5      n[        U5      [        U5      :X  d   e[        XC5       H<  u  pVUR	                  SS9  UR                   U:X  d   eUR                  5       U:X  a  M<   e   g )NTfull)rW   r   rk   r   validater   )rd   readerexpected_schemar   batchesbatchexpected_batchs          r   check_reader&BaseTestStreamingJSONRead.check_readerq  s|    }}///v,7|s=1111%(%@!ENNN%<<?222??$666 &ArI   c                 D    U R                   " U40 UD6R                  5       $ r
   )r   read_allrc   s      r   rg   $BaseTestStreamingJSONRead.read_bytesz  s    q+F+4466rI   c                    SnS/S/S.n[         R                  " U5      nU R                  U5      n[        R                  " S[        R
                  " 5       4S[        R
                  " 5       4/5      nU R                  XEU/5        g )Nr   r}   r~   r   r|   re   )r   r   r   r&   rW   r(   r  )rd   r5   r   r   r   r  s         r   r   *BaseTestStreamingJSONRead.test_file_object}  sq    $ c,jj$))c288:%6&)288:%6%8 9&M?CrI   c                     Sn[        5       nSUl        [        R                  " [        R
                  SS9   U R                  XS9  S S S 5        g ! , (       d  f       g = f)Ns   {"i": 0            }
{"i": 1}r   1straddling object straddles two block boundaries*ru   r   r   rK   rZ   r[   r&   r   r   )rd   bad_first_chunkrx   s      r   test_bad_first_chunk.BaseTestStreamingJSONRead.test_bad_first_chunk  sL    ;"}"#]]OOE
 OOOOG	
 
 
   A
Ac                 4   Sn[        5       nSUl        [        R                  " S[        R                  " 5       4/5      nU R                  XS9nUR                  U:X  d   eUR                  5       R                  5       SS/0:X  d   e[        R                  " [        R                  SS9   UR                  5         S S S 5        [        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Ns   {"i": 0}
{"i":     1}
{"i": 2}r   ir   r   r  ru   r   rK   r&   rW   r(   r   read_next_batchr   rZ   r[   r   StopIterationrd   bad_middle_chunkrx   r  r   s        r   test_bad_middle_chunk/BaseTestStreamingJSONRead.test_bad_middle_chunk  s    >"}"$))c288:%6$78!1M}}///%%'113!8
 
 	
 
 ]]OOE
 ""$	
 ]]=)""$ *)
 
 *)   +C8D	8
D	
Dc                     Sn[        5       nSUl        [        R                  " [        R
                  SS9   U R                  XS9  S S S 5        g ! , (       d  f       g = f)Ns   {"n": }
{"n": 10000}   !JSON parse error: Invalid value.*ru   r   r  rd   bad_first_blockrx   s      r   test_bad_first_parse.BaseTestStreamingJSONRead.test_bad_first_parse  sM    2"}"$]]2??!DFOOOOGF F Fr  c                     Sn[        5       nSUl        [        R                  " [        R
                  SS9   U R                  XS9  S S S 5        g ! , (       d  f       g = f)Ns"   {            }{"n": }
{"n": 10000}r  r  ru   r   r  r   s      r   !test_bad_middle_parse_after_empty;BaseTestStreamingJSONRead.test_bad_middle_parse_after_empty  sM    @"}"$]]2??!DFOOOOGF F Fr  c                 4   Sn[        5       nSUl        [        R                  " S[        R                  " 5       4/5      nU R                  XS9nUR                  U:X  d   eUR                  5       R                  5       SS/0:X  d   e[        R                  " [        R                  SS9   UR                  5         S S S 5        [        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Ns%   {"n": 1000}
{"n": 200 00}
{"n": 3000}r   nr   r   z@JSON parse error: Missing a comma or '}' after an object member*ru   r  r  s        r   test_bad_middle_parse/BaseTestStreamingJSONRead.test_bad_middle_parse  s    E"}"$))c288:%6$78!1M}}///%%'113$8
 
 	
 
 ]]OO1

 ""$
 ]]=)""$ *)
 
 *)r  c                 :   Sn[        SS9n[        SS9n[        R                  " S[        R                  " 5       4/5      nU R                  UUUS9nUR                  U:X  d   eUR                  5       R                  5       SS/0:X  d   e[        R                  " [        R                  S	S
9   UR                  5         S S S 5        [        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = fNs   {"n": 0}{1}
{"n": 2}r   r   TrU   r(  rw   r   JSON parse error *ru   r   r   r&   rW   r(   r   r  r   rZ   r[   r   r  rd   r  rx   ry   r  r   s         r   %test_non_linewise_chunker_first_block?BaseTestStreamingJSONRead.test_non_linewise_chunker_first_block      3"b1$=))c288:%6$78%' ! ) }}///%%'113!8
 
 	
 
 ]]2??!57""$7 ]]=)""$ *)	7 7 *)   .C;!D;
D	
Dc                 :   Sn[        SS9n[        SS9n[        R                  " S[        R                  " 5       4/5      nU R                  UUUS9nUR                  U:X  d   eUR                  5       R                  5       SS/0:X  d   e[        R                  " [        R                  S	S
9   UR                  5         S S S 5        [        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = fr,  r/  r0  s         r   )test_non_linewise_chunker_bad_first_blockCBaseTestStreamingJSONRead.test_non_linewise_chunker_bad_first_block  r3  r4  c                    Sn[        SS9n[        SS9n[        R                  " S[        R                  " 5       4/5      nU R                  UUUS9nUR                  U:X  d   eUR                  5       R                  5       SS/0:X  d   eUR                  5       R                  5       SS	/0:X  d   e[        R                  " [        R                  S
S9   UR                  5         S S S 5        [        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Ns&   {"n": 0}
{"n":    1}
{}"n":2}
{"n": 3}r   r   Tr-  r(  rw   r   r}   r.  ru   r/  r0  s         r   *test_non_linewise_chunker_bad_middle_blockDBaseTestStreamingJSONRead.test_non_linewise_chunker_bad_middle_block  s(   G"b1$=))c288:%6$78%' ! ) }}///%%'113!8
 
 	
 
 %%'113!8
 
 	
 
 ]]2??!57""$7 ]]=)""$ *)	7 7 *)s   D"D3"
D03
Ec                    Sn[         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      n[	        SS9n[        US9nS/S/S	.nU R                  UUUS
9nU R                  XbU/5        g )Ns       
{"b": true, "s": "foo"}re   s   r   r   TrP   )re   r<  rw   )r&   rW   r   utf8r   r   r   r  )rd   leading_empty_chunkrT   rx   ry   r   r   s          r    test_ignore_leading_empty_blocks:BaseTestStreamingJSONRead.test_ignore_leading_empty_blocks  s    >))"((*"'')%
  #b1$_Eug
 %' ! ) 	&M?CrI   c                    Sn[         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      nS/S/S.n[	        SS9n[        S	S
9nU R                  UUUS9nUR                  U:X  d   eUR                  5       R                  5       U:X  d   e[        R                  " [         R                  SS9   UR                  5         S S S 5        [         R                  " S[         R                  " 5       4S[         R                  " 5       4S[         R                  " 5       4/5      nSS/SS /S S/S.n[	        SS9nU R                  XUS9nUR                  U:X  d   eUR                  5       R                  5       U:X  d   e[        R                  " [         R                  SS9   UR                  5         S S S 5        [         R                  " S[         R                  " 5       4S[         R                  " 5       4S[         R                  " 5       4S[         R                  " 5       4/5      n/ SQ/ SQ/ SQ/ SQS.n[	        SS9nU R                  XUS9nUR                  U:X  d   eUR                  5       R                  5       U:X  d   eg ! , (       d  f       GN= f! , (       d  f       N= f)NsI   {"a": 0, "b": "foo"    }
        {"a": 1, "c": true  }
{"a": 2, "d": 4.0}r|   re   r   rP   r       r   rQ   )rV   rw   r   ru   rn   r}   Tr   @   r   )r   r}   r~   )rP   NN)NTN)NNr   r   `   )r&   rW   r(   r>  r   r   r   r  r   rZ   r[   r   r   r   )rd   r   r  r   rx   ry   r   s          r   test_inference(BaseTestStreamingJSONRead.test_inference  sz   3))"((*"'')%
   !c0"b1$wG%' ! ) }}///%%'113}DDD]]2??!EG""$G ))"((*"'')"((*%
 
  !!fE4=d|L"b1/< ! >}}///%%'113}DDD]]2??!EG""$G ))"((*"'')"((*"**,	%
  (.A07HJ"b1/< ! >}}///%%'113}DDD?G GG Gs   J7J/
J,/
J=r<   N)r   r   r   r   r   r   r  rg   r   r  r  r"  r%  r)  r1  r6  r9  r@  rF  r   r<   rI   r   r   r   b  sS    	0977DH%(HH%*%*%*%2D$0ErI   r   c                       \ rS rSrS rSrg)TestSerialJSONReadiQ  c                 |    UR                  S[        5       5      nSUl        [        U0 UD6nUR	                  SS9  U$ )Nrx   FTr   r   r   rL   r   r   rd   r   rf   rx   rl   s        r   r   TestSerialJSONRead.read_jsonS  s@    ((G#( 4*6*D!rI   r<   Nr   r   r   r   r   r   r<   rI   r   rI  rI  Q      rI   rI  c                       \ rS rSrS rSrg)TestParallelJSONReadi[  c                 |    UR                  S[        5       5      nSUl        [        U0 UD6nUR	                  SS9  U$ )Nrx   Tr   rK  rL  s        r   r   TestParallelJSONRead.read_json]  s@    ((G#' 4*6*D!rI   r<   NrN  r<   rI   r   rQ  rQ  [  rO  rI   rQ  c                       \ rS rSrSrSrg)TestSerialStreamingJSONReadie  Fr<   Nr   r   r   r   rL   r   r<   rI   r   rU  rU  e  s    KrI   rU  c                       \ rS rSrSrSrg)TestThreadedStreamingJSONReadij  Tr<   NrV  r<   rI   r   rX  rX  j  s	     KrI   rX  )r~   r   z
)%r   collectionsr   decimalr   r   r   r"   r   unittestr   r   ImportErrorrZ   pyarrowr&   pyarrow.jsonr   r   r   r   r   r9   rH   rN   r]   ABCr_   r   r   TestCaserI  rQ  rU  r   	threadingrX  r<   rI   r   <module>rb     s  $  #  	       H H!
04*E6HI377 HIV!4| !4HlE lE^)8+<+< +X->-> ";X=N=N 
 $=x?P?P  ]  	Bs   C, ,C76C7