
    j[                        d dl Z d dlmZ d dl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n# e$ r dZY nw xY wd dlZd dlZd dlmZmZmZmZ d Zdd	Zd
 Zd Zd Z G d de j                  Z G d de          Z G d de          Z G d dee	j                  Z G d dee	j                  Z  G d dee	j                  Z!ej"        j#         G d dee	j                              Z$dS )    N)OrderedDict)Decimal)	read_json	open_jsonReadOptionsParseOptionsc               #   T   K   t           j        } | E d {V  | D ]}| D ]	}||z   V  
d S N)stringascii_lowercase)lettersfirstseconds      a/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/pyarrow/tests/test_json.pygenerate_col_namesr   %   sf      $G ! ! 	! 	!F&.    	!! !       
   
c                 .   t           j                            d                              dd| |f          }t	          t          j        t                      |                     }g }|j        D ]P}t          d t          ||          D                       }|                    t          j        |                     Q|                    |                                          }d |D             }	t           j                            |	|          }
||
fS )N*   r     )sizec                 6    g | ]\  }}|t          |          fS  )int).0kvs      r   
<listcomp>z$make_random_json.<locals>.<listcomp>3   s&    NNNACFFNNNr   c                 \    g | ])}t          j        |t          j                               *S ))type)paarrayint64)r   cols     r   r    z$make_random_json.<locals>.<listcomp>6   s-    ===#rx"(**---===r   )nprandomRandomStaterandintlist	itertoolsislicer   Tr   zipappendjsondumpsjoinencoder#   Tablefrom_arrays)num_colsnum_rowslineseparr	col_nameslinesrowjson_objdatacolumnsexpecteds              r   make_random_jsonrB   .   s    
)


#
#
+
+At8X:N
+
O
OCY%&8&:&:HEEFFIEu + +NN#i:M:MNNNOOTZ))****<<%%''D=====Gx##GY77H>r   c                      | di |}|                     |                    ||j                            }|                                D ]\  }}t	          ||          |k    sJ d S )N)protocolr   )loadsr2   HIGHEST_PROTOCOLitemsgetattr)clspicklerattr_valuesoptsnew_optsnamevalues          r   check_options_class_picklingrP   ;   s    3D}}W]]44;4L + N N O OH"((** 0 0ex&&%/////0 0r   c                 |   t           } |            }|j        dk    sJ d|_        |j        dk    sJ |j        du sJ d|_        |j        du sJ  |dd          }|j        dk    sJ |j        du sJ d}t          |          d| d	k    sJ t	          |          d
| d	k    sJ t          || dd           d S )Nr   i90  TFi  )
block_sizeuse_threadsz+
    use_threads=False,
    block_size=1234z<pyarrow.json.ReadOptions>()zReadOptions()rJ   rR   rS   )r   rR   rS   reprstrrP   )pickle_modulerI   rL   expected_repr_inners       r   test_read_optionsrY   C   s'   
C355D?QDO?e####t####Du$$$$3$E222D?d""""u$$$$ ::M7JMMMMMMMt99=':======= m,0-24 4 4 4 4 4r   c                 Z   t           } |            }|j        du sJ |j        J d|_        |j        du sJ d}t          |          d| dk    sJ t	          |          d| dk    sJ t          j        t          j        dt          j                              g          }||_        |j        |k    sJ |j	        dk    sJ d	D ]}||_	        |j	        |k    sJ t          j        t                    5  d
|_	        d d d            n# 1 swxY w Y   t          || |dd           d S )NFTz]
    explicit_schema=None,
    newlines_in_values=True,
    unexpected_field_behavior='infer'z<pyarrow.json.ParseOptions>(rT   zParseOptions(fooinfer)ignoreerrorr\   zinvalid-valuer]   )rJ   explicit_schemanewlines_in_valuesunexpected_field_behavior)r   r`   r_   rU   rV   r#   schemafieldint32ra   pytestraises
ValueErrorrP   )rW   rI   rL   rX   rb   rO   s         r   test_parse_optionsrh   _   s   
C355D"e++++'''"D"d****)
 ::N8KNNNNNNNt99>(;>>>>>>>Y

33455F!D6)))))W4444- 7 7).&-66666	z	"	" 9 9)8&9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 !m1749;CE E E E E Es   8DDDc                       e Zd Zej        d             Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zej        j        d             Zej        j        d             Zej        j        d             ZdS )BaseTestJSONc                     t           )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_byteszBaseTestJSON.read_bytes   s
     "!r   c                 h    |j         t          |          k    sJ d |j        D             |k    sJ d S )Nc                     g | ]	}|j         
S r   )rN   )r   cs     r   r    z,BaseTestJSON.check_names.<locals>.<listcomp>   s    ...1...r   )num_columnslenr@   )rn   tablenamess      r   check_nameszBaseTestJSON.check_names   sC     CJJ.........%777777r   c                    d}t                      }t                      }||dz   fD ]}dD ]}||_        d|_        t	          j        t          d          5  |                     |||           d d d            n# 1 swxY w Y   t          dd	          D ]?}||_        |                     |||          }|	                                d
g dik    sJ @d S )Ns   {"a": 1}
{"a": 2}
{"a": 3}   
FT   ztry to increase block sizematchread_optionsparse_options	      a)   r      )
r   r   r`   rR   re   rf   rg   rq   range	to_pydict)rn   rowsr   r   r?   r`   rR   rw   s           r   test_block_sizeszBaseTestJSON.test_block_sizes   s   ."}}$4%<( 	A 	AD&3 A A"3E0*+']:)EG G G A AOOD|2? $ A A AA A A A A A A A A A A A A A A #(2,, A AJ.8L+ OOD|:G , I IE ??,,iii0@@@@@@	AA	A 	As   A::A>A>c                 |    d}|                      |          }|                                ddgddgddgdk    sJ d S )	Ns/   {"a": 1,"b": 2, "c": 3}
{"a": 4,"b": 5, "c": 6}r   r}   r      r      r   ro   rt   )rq   r   )rn   r   rw   s      r   test_no_newline_at_endz#BaseTestJSON.test_no_newline_at_end   sb    B%%  QQQ%
 %
 
 
 
 
 
 
r   c                 6   d}|                      |          }t          j        dt          j                    fdt          j                    fdt          j                    fg          }|j        |k    sJ |                                ddgddgd	d
gdk    sJ d S )Ns0   {"a": 1,"b": 2, "c": 3}
{"a": 4,"b": 5, "c": 6}
r   ro   rt   r   r}   r   r   r   r   r   )rq   r#   rb   r%   r   rn   r   rw   rb   s       r   test_simple_intszBaseTestJSON.test_simple_ints   s    D%%S"(**- "(**- "(**-/ 0 0 |v%%%%  QQQ%
 %
 
 
 
 
 
 
r   c                 d   d}|                      |          }t          j        dt          j                    fdt          j                    fdt          j                    fdt          j                    fg          }|j        |k    sJ |                                ddgdd	gd
dgddgdk    sJ d S )NsQ   {"a": 1,"b": 2, "c": "3", "d": false}
{"a": 4.0, "b": -5, "c": "foo", "d": true}
r   ro   rt   d      ?      @r   3r[   FTr   ro   rt   r   )rq   r#   rb   float64r%   r   bool_r   r   s       r   test_simple_variedzBaseTestJSON.test_simple_varied   s    @%%S"*,,/ "(**- ")++. "(**-/ 0 0 |v%%%%  sRu	%
 %
 
 
 
 
 
 
r   c           	         d}|                      |          }t          j        dt          j                    fdt          j                    fdt          j                    fdt          j                    fdt          j                    fg          }|j        |k    sJ |                                g dg dg d	g d
g ddk    sJ d S )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   ro   rt   r   e)r   Ng      @)r   r   N)Nr[   nan)NNN)NTF)r   ro   rt   r   r   )	rq   r#   rb   r   r%   r   nullr   r   r   s       r   test_simple_nullszBaseTestJSON.test_simple_nulls   s    M %%S"*,,/ "(**- ")++. "')), "(**-	/ 0 0
 |v%%%%  !!!%%%###$$$%
 %
 
 
 
 
 
 
r   c                     d}|                      |          }t          j        dt          j        t          j                              fg          }|j        |k    sJ |                                dg gik    sJ d S )N	   {"a": []}r   )rq   r#   rb   list_r   r   r   s       r   test_empty_listszBaseTestJSON.test_empty_lists   sy    %%S"(2799"5"56788|v%%%%  S2$K//////r   c                     d}|                      |          }t          j        g           }|j        |k    sJ |j        dk    sJ |j        dk    sJ d S )Ns   {}
{}
r   r   )rq   r#   rb   ru   r8   r   s       r   test_empty_rowszBaseTestJSON.test_empty_rows   se    %%2|v%%%% A%%%%~""""""r   c                    d}dt          d          t          d          t          d          d gi}t          j        t          j        t          j        t          j        f}|D ]q}t          j        d |dd          fg          }t          |          }|                     ||	          }|j        |k    sJ |	                                |k    sJ rd S )
Ns'   {"a": 1}
{"a": 1.45}
{"a": -23.456}
{}
r   1z1.45z-23.456r   r}   r_   r   )
r   r#   	decimal32	decimal64
decimal128
decimal256rb   r   rq   r   )rn   r   rA   decimal_typestype_factoryrb   rL   rw   s           r   test_explicit_schema_decimalz)BaseTestJSON.test_explicit_schema_decimal   s    
 '#,,1C1CTJ
 r|R]BMR) 	1 	1LYll1a&8&8 9:;;F777DOODO==E<6))))??$$00000	1 	1r   c                 ,   d}t          j        dt          j                    fg          }t          |          }|                     ||          }|j        t          j        dt          j                    fdt          j                    fg          k    sJ |                                ddgdd	gd
k    sJ t          |d          }|                     ||          }|j        t          j        dt          j                    fg          k    sJ |                                dddgik    sJ t          |d          }t          j        t           j	        d          5  |                     ||           d d d            d S # 1 swxY w Y   d S )Ns2   {"foo": "bar", "num": 0}
{"foo": "baz", "num": 1}
r[   r   r   nums   bars   bazr   r   )r[   r   r]   )r_   ra   r^   "JSON parse error: unexpected fieldr~   )
r#   rb   binaryr   rq   r%   r   re   rf   ArrowInvalid)rn   r   rb   rL   rw   s        r   .test_explicit_schema_with_unexpected_behaviourz;BaseTestJSON.test_explicit_schema_with_unexpected_behaviour  s-   .BIKK 
   F333D99|ryBIKK BHJJ*
           F#q6%
 %
 
 
 
 
 F6>@ @ @D99|ryBIKK *
           FF#%
 
 
 
 

 F6=? ? ?]2?!EG G G 	6 	6OODO555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   $F		FFc                    t          dd          \  }}|                     |          }|j        |j        k    sJ |                    |          sJ |                                |                                k    sJ d S )Nr   r   r7   r8   )rB   rq   rb   equalsr   )rn   r?   rA   rw   s       r   test_small_random_jsonz#BaseTestJSON.test_small_random_json(  s    )1rBBBh%%|x....||H%%%%%  H$6$6$8$8888888r   c                     t          dd          \  }}t          d          }|                     ||          }|j        dk    sJ |j        dk    sJ d S )Nr   i r   i   rR   r   )rB   r   rq   r8   )rn   r?   rA   r   rw   s        r   test_load_large_jsonz!BaseTestJSON.test_load_large_json0  sj    )1vFFFh"l;;;<@@~'''' F******r   c                    t          dd          \  }}t                      }t                      }||                    d          fD ]}dD ]}||_        dD ]t}||_        |                     |||          }|j        |j        k    sJ |                    |          s,|	                                |	                                k    sJ ud S )Nr   d   r   s   
r|   )      %   r   )
rB   r   r   rstripr`   rR   rq   rb   r   r   )	rn   	data_baserA   r   r   r?   r`   rR   rw   s	            r   test_stress_block_sizesz$BaseTestJSON.test_stress_block_sizes9  s    /CHHH	8"}}$	 0 0 9 9: 
	I 
	ID&3 	I 	I"3E0". I IJ.8L+ OOD|:G , I IE <8?:::: <<11 I$00H4F4F4H4HHHHHI	I
	I 
	Ir   N)__name__
__module____qualname__abcabstractmethodrq   ry   r   r   r   r   r   r   r   r   r   re   marknumpyr   r   r   r   r   r   rj   rj      s3       " " "8 8 8A A A,
 
 

 
 

 
 
"
 
 
(0 0 0# # #1 1 1"#6 #6 #6J [9 9 9 [+ + + [I I I I Ir   rj   c                        e Zd Zd Zd Zd ZdS )BaseTestJSONReadc                 B     | j         t          j        |          fi |S r
   )r   r#   	py_bufferrm   s      r   rq   zBaseTestJSONRead.read_bytesO  $    t~bl1oo88888r   c                 x   d}dgdgd}t          j        |          }|                     |          }|                                |k    sJ t          j        |                                          }t          j        t                    5  |                     |           d d d            d S # 1 swxY w Y   d S )N   {"a": 1, "b": 2}
r   r   r   ro   )	ioBytesIOr   r   StringIOdecodere   rf   	TypeError)rn   r?   expected_databiorw   sios         r   test_file_objectz!BaseTestJSONRead.test_file_objectR  s    $ c,,js##  M1111k$++--((]9%% 	  	 NN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   B//B36B3c           
      J   d}t          t          |                    }dd dgfdd g gfdd g dgggfdd i gfd	d d
d id
ddiigffD ]]\  }}|                     ||z   |          }d|i}|                                |k    sJ |                    d          j        dk    sJ ^d S )Ns"   {                               }
r   s   {"a": 0}r   r   s   {"a": []}
{"a": [[1]]}r   s	   {"a": {}}s    {"a": {}}
{"a": {"b": {"c": 1}}}ro   rt   r   r   )r   rv   rq   r   column
num_chunks)rn   	first_rowr   	next_rowsexpected_pylistrw   rA   s          r   test_reconcile_across_blocksz-BaseTestJSONRead.test_reconcile_across_blocks]  s    :	"c)nn===4)$D":&'$aSE):;D":&1S$K#Qx13+
 	4 	4&I OOI	$91= $ ? ?E_-H??$$0000<<$$/!33333	4 	4r   N)r   r   r   rq   r   r   r   r   r   r   r   M  sA        9 9 9	  	  	 4 4 4 4 4r   r   c                   h    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )BaseTestStreamingJSONReadc                 ~    |                     dt                                }| j        |_        t          |g|R i |S )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
        r   )
setdefaultr   rS   r   )rn   r1   argsrp   r   s        r   r   z#BaseTestStreamingJSONRead.open_jsonr  sF     ((GG#'#3 ///////r   c                 B     | j         t          j        |          fi |S r
   )r   r#   r   rm   s      r   
open_bytesz$BaseTestStreamingJSONRead.open_bytes}  r   r   c                 (   |j         |k    sJ t          |          }t          |          t          |          k    sJ t          ||          D ]B\  }}|                    d           |j         |k    sJ |                                |k    sJ Cd S )NTfull)rb   r+   rv   r/   validater   )rn   readerexpected_schemar   batchesbatchexpected_batchs          r   check_readerz&BaseTestStreamingJSONRead.check_reader  s    }////v,,7||s=111111%(-%@%@ 	7 	7!E>NNN%%%<?2222??$$66666	7 	7r   c                 B     | j         |fi |                                S r
   )r   read_allrm   s      r   rq   z$BaseTestStreamingJSONRead.read_bytes  s(    tq++F++44666r   c                    d}dgdgd}t          j        |          }|                     |          }t          j        dt          j                    fdt          j                    fg          }|                     |||g           d S )Nr   r   r   r   r   ro   )r   r   r   r#   rb   r%   r   )rn   r?   r   r   r   r   s         r   r   z*BaseTestStreamingJSONRead.test_file_object  s    $ c,,j$$)c28::%6&)28::%6%8 9 9&/M?CCCCCr   c                     d}t                      }d|_        t          j        t          j        d          5  |                     ||           d d d            d S # 1 swxY w Y   d S )Ns   {"i": 0            }
{"i": 1}r   1straddling object straddles two block boundaries*r~   r   r   rR   re   rf   r#   r   r   )rn   bad_first_chunkr   s      r   test_bad_first_chunkz.BaseTestStreamingJSONRead.test_bad_first_chunk  s    ;"}}"#]OE
 
 
 	H 	H OOO,OGGG		H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H   AA!$A!c                 N   d}t                      }d|_        t          j        dt          j                    fg          }|                     ||          }|j        |k    sJ |                                                                ddgik    sJ t          j	        t          j
        d          5  |                                 d d d            n# 1 swxY w Y   t          j	        t                    5  |                                 d d d            d S # 1 swxY w Y   d S )Ns   {"i": 0}
{"i":     1}
{"i": 2}r   ir   r   r   r~   r   rR   r#   rb   r%   r   read_next_batchr   re   rf   r   StopIterationrn   bad_middle_chunkr   r   r   s        r   test_bad_middle_chunkz/BaseTestStreamingJSONRead.test_bad_middle_chunk  s   >"}}"$)c28::%6$788!1MM}////%%''1133!8
 
 
 
 
 ]OE
 
 
 	% 	% ""$$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]=)) 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%$   3CCC8DD!Dc                     d}t                      }d|_        t          j        t          j        d          5  |                     ||           d d d            d S # 1 swxY w Y   d S )Ns   {"n": }
{"n": 10000}   !JSON parse error: Invalid value.*r~   r   r   rn   bad_first_blockr   s      r   test_bad_first_parsez.BaseTestStreamingJSONRead.test_bad_first_parse  s    2"}}"$]2?!DF F F 	H 	HOOO,OGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hr  c                     d}t                      }d|_        t          j        t          j        d          5  |                     ||           d d d            d S # 1 swxY w Y   d S )Ns"   {            }{"n": }
{"n": 10000}r  r  r~   r   r   r  s      r   !test_bad_middle_parse_after_emptyz;BaseTestStreamingJSONRead.test_bad_middle_parse_after_empty  s    @"}}"$]2?!DF F F 	H 	HOOO,OGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hr  c                 N   d}t                      }d|_        t          j        dt          j                    fg          }|                     ||          }|j        |k    sJ |                                                                ddgik    sJ t          j	        t          j
        d          5  |                                 d d d            n# 1 swxY w Y   t          j	        t                    5  |                                 d d d            d S # 1 swxY w Y   d S )Ns%   {"n": 1000}
{"n": 200 00}
{"n": 3000}r   nr   r   z@JSON parse error: Missing a comma or '}' after an object member*r~   r  r  s        r   test_bad_middle_parsez/BaseTestStreamingJSONRead.test_bad_middle_parse  s   E"}}"$)c28::%6$788!1MM}////%%''1133$8
 
 
 
 
 ]O1
 
 
 	% 	%
 ""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]=)) 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%r  c                 f   d}t          d          }t          d          }t          j        dt          j                    fg          }|                     |||          }|j        |k    sJ |                                                                ddgik    sJ t          j	        t          j
        d	
          5  |                                 d d d            n# 1 swxY w Y   t          j	        t                    5  |                                 d d d            d S # 1 swxY w Y   d S Ns   {"n": 0}{1}
{"n": 2}r   r   Tr`   r  r   r   JSON parse error *r~   r   r   r#   rb   r%   r   r  r   re   rf   r   r  rn   r	  r   r   r   r   s         r   %test_non_linewise_chunker_first_blockz?BaseTestStreamingJSONRead.test_non_linewise_chunker_first_block     3"b111$===)c28::%6$788%' ! ) ) }////%%''1133!8
 
 
 
 
 ]2?!57 7 7 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]=)) 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%$   ?C  C$'C$D&&D*-D*c                 f   d}t          d          }t          d          }t          j        dt          j                    fg          }|                     |||          }|j        |k    sJ |                                                                ddgik    sJ t          j	        t          j
        d	
          5  |                                 d d d            n# 1 swxY w Y   t          j	        t                    5  |                                 d d d            d S # 1 swxY w Y   d S r  r  r  s         r   )test_non_linewise_chunker_bad_first_blockzCBaseTestStreamingJSONRead.test_non_linewise_chunker_bad_first_block  r  r  c                    d}t          d          }t          d          }t          j        dt          j                    fg          }|                     |||          }|j        |k    sJ |                                                                ddgik    sJ |                                                                dd	gik    sJ t          j	        t          j
        d
          5  |                                 d d d            n# 1 swxY w Y   t          j	        t                    5  |                                 d d d            d S # 1 swxY w Y   d S )Ns&   {"n": 0}
{"n":    1}
{}"n":2}
{"n": 3}r   r   Tr  r  r   r   r   r  r~   r  r  s         r   *test_non_linewise_chunker_bad_middle_blockzDBaseTestStreamingJSONRead.test_non_linewise_chunker_bad_middle_block  s   G"b111$===)c28::%6$788%' ! ) ) }////%%''1133!8
 
 
 
 
 %%''1133!8
 
 
 
 
 ]2?!57 7 7 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]=)) 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s$   .DDD3EEEc                 0   d}t          j        dt          j                    fdt          j                    fg          }t	          d          }t          |          }dgdgd	}|                     |||
          }|                     |||g           d S )Ns       
{"b": true, "s": "foo"}ro   s   r   r   Tr[   )ro   r%  r   )r#   rb   r   utf8r   r   r   r   )rn   leading_empty_chunkr_   r   r   r   r   s          r    test_ignore_leading_empty_blocksz:BaseTestStreamingJSONRead.test_ignore_leading_empty_blocks  s    >)"(**"'))%
   #b111$_EEEug
 
 %' ! ) ) 	&/M?CCCCCr   c                    d}t          j        dt          j                    fdt          j                    fg          }dgdgd}t	          d          }t          d	
          }|                     |||          }|j        |k    sJ |                                                                |k    sJ t          j
        t           j        d          5  |                                 d d d            n# 1 swxY w Y   t          j        dt          j                    fdt          j                    fdt          j                    fg          }ddgdd gd dgd}t	          d          }|                     |||          }|j        |k    sJ |                                                                |k    sJ t          j
        t           j        d          5  |                                 d d d            n# 1 swxY w Y   t          j        dt          j                    fdt          j                    fdt          j                    fdt          j                    fg          }g dg dg dg dd}t	          d          }|                     |||          }|j        |k    sJ |                                                                |k    sJ d S )NsI   {"a": 0, "b": "foo"    }
        {"a": 1, "c": true  }
{"a": 2, "d": 4.0}r   ro   r   r[   r       r   r\   )ra   r   r   r~   rt   r   Tr   @   r   )r   r   r   )r[   NN)NTN)NNr   r   `   )r#   rb   r%   r'  r   r   r   r  r   re   rf   r   r   r   )rn   r   r   r   r   r   r   s          r   test_inferencez(BaseTestStreamingJSONRead.test_inference-  s   3)"(**"'))%
    !c00"b111$wGGG%' ! ) ) }////%%''1133}DDDD]2?!EG G G 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% )"(**"'))"(**%
  
  !!fE4=d|LL"b111L/< ! > >}////%%''1133}DDDD]2?!EG G G 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% )"(**"'))"(**"*,,	%
   (ii.A.A.A0007H7H7HJ J"b111L/< ! > >}////%%''1133}DDDDDDs$   C88C<?C< HHHN)r   r   r   r   r   r   rq   r   r  r
  r  r  r  r  r!  r#  r)  r.  r   r   r   r   r   q  s	       	0 	0 	09 9 97 7 77 7 7D D DH H H% % %(H H HH H H% % %*% % %*% % %*% % %2D D D$0E 0E 0E 0E 0Er   r   c                       e Zd Zd ZdS )TestSerialJSONReadc                     |                     dt                                }d|_        t          |i |}|                    d           |S )Nr   FTr   r   r   rS   r   r   rn   r   rp   r   rw   s        r   r   zTestSerialJSONRead.read_jsonb  sN    ((GG#( 4*6**D!!!r   Nr   r   r   r   r   r   r   r0  r0  `  #            r   r0  c                       e Zd Zd ZdS )TestParallelJSONReadc                     |                     dt                                }d|_        t          |i |}|                    d           |S )Nr   Tr   r2  r3  s        r   r   zTestParallelJSONRead.read_jsonl  sN    ((GG#' 4*6**D!!!r   Nr4  r   r   r   r7  r7  j  r5  r   r7  c                       e Zd ZdZdS )TestSerialStreamingJSONReadFNr   r   r   rS   r   r   r   r:  r:  t  s        KKKr   r:  c                       e Zd ZdZdS )TestThreadedStreamingJSONReadTNr;  r   r   r   r=  r=  y  s         KKKr   r=  )r   r   r   )%r   collectionsr   decimalr   r   r,   r1   r   unittestr   r'   ImportErrorre   pyarrowr#   pyarrow.jsonr   r   r   r   r   rB   rP   rY   rh   ABCrj   r   r   TestCaser0  r7  r:  r   	threadingr=  r   r   r   <module>rG     s  $ 


 # # # # # #       				          	BBB      H H H H H H H H H H H H! ! !
 
 
 
0 0 04 4 48 E  E  EFHI HI HI HI HI37 HI HI HIV!4 !4 !4 !4 !4| !4 !4 !4HlE lE lE lE lE lE lE lE^    )8+<       +X->       ";X=N   
     $=x?P     s   + 55